<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Ayuda WordPress</title>
	<atom:link href="https://ayudawp.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://ayudawp.com</link>
	<description>Recursos, temas, plugins, tutoriales en español</description>
	<lastBuildDate>Fri, 09 Oct 2026 10:21:13 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://ayudawp.com/wp-content/uploads/2026/05/cropped-ayuda-wordpress-32x32.png</url>
	<title>Ayuda WordPress</title>
	<link>https://ayudawp.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item>
		<title>WordPress 7.1.2 a toda prisa, malware de ocho cabezas, adiós a Meetup y Google cobrando peaje #CrónicasWordPress</title>
		<link>https://ayudawp.com/wordpress-7-1-2-a-toda-prisa-malware-de-ocho-cabezas-adios-a-meetup-y-google-cobrando-peaje-cronicaswordpress/</link>
					<comments>https://ayudawp.com/wordpress-7-1-2-a-toda-prisa-malware-de-ocho-cabezas-adios-a-meetup-y-google-cobrando-peaje-cronicaswordpress/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Fri, 09 Oct 2026 10:21:13 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[#CrónicasWordPress]]></category>
		<category><![CDATA[#DoctorWordPress]]></category>
		<category><![CDATA[#TrucosWordPress]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160581</guid>

					<description><![CDATA[Esta semana en el canal oficial de Ayuda WordPress en YouTube solo ha habido directo el lunes, pero vino cargadito, porque la semana anterior no pude grabar y tenía dos semanas de noticias acumuladas. Ha tocado mucha seguridad (de la gorda), novedades de comunidad que llevábamos tiempo esperando, WooCommerce 11.2 y un buen repaso a lo que están haciendo la IA y Google con nuestro tráfico.]]></description>
										<content:encoded><![CDATA[<p>Esta semana en el canal oficial de Ayuda WordPress en YouTube solo ha habido directo el lunes, pero vino cargadito, porque la semana anterior no pude grabar y tenía dos semanas de noticias acumuladas. <strong>Ha tocado mucha seguridad (de la gorda), novedades de comunidad que llevábamos tiempo esperando, WooCommerce 11.2 y un buen repaso a lo que están haciendo la IA y Google con nuestro tráfico.</strong></p>
<p>El miércoles no hubo Doctor WordPress porque estaba en el WordPress Agency Forum de Madrid, así que esta semana te dejo el resumen de las Crónicas solamente. La semana que viene vuelvo con las dos sesiones.</p>
<h2>Crónicas WordPress: dos semanas de noticias en un solo directo</h2>
<h3>WordPress 7.1.2, de las actualizaciones que no se pueden dejar para mañana</h3>
<p>Empecé por lo más serio. WordPress 7.1.2 salió el 22 de septiembre y corrige un único fallo, pero de los gordos, <strong>con una puntuación CVSS de 9,2 (el estándar con el que se mide la gravedad de las vulnerabilidades)</strong>. Permitía a un atacante conseguir que WordPress incluyera un archivo PHP de su elección desde fuera de la carpeta del tema y, a partir de ahí, ejecutar código en remoto.</p>
<p>Hacía falta que el tema activo cumpliera cierta condición en su estructura de carpetas, algo que se da en un montón de temas muy usados. Se informó el 20 de julio y se arregló con divulgación responsable, en secreto, como debe ser. El problema es que <strong>ya había gente aprovechando la vulnerabilidad, hasta el punto de que se avisó a agencias gubernamentales de Estados Unidos</strong>. Si todavía no estás en la 7.1.2, ya estás tardando.</p>
<h3>Un malware que se reconstruye solo y 50.000 credenciales robadas</h3>
<p>Sucuri ha detectado un malware para WordPress que da un poquito de miedo. Se esconde en el <code>.user.ini</code>, en los <em>drop-ins</em> de caché como <code>advanced-cache.php</code>, en el <code>functions.php</code> de un tema falso o como plugin obligatorio (<em>mu-plugin</em>). <strong>Se instala en ocho sitios distintos y cada copia es capaz de reconstruir a las demás</strong>, así que borras una y otra la vuelve a escribir, como un bicho de muchas cabezas.</p>
<p>Casi siempre entra por temas y plugins «gratis» de procedencia dudosa. Te ahorras 60 dólares al año en un negocio con el que se supone que vas a ganar dinero y acabas regalando tu web para que mine criptomonedas. Tú verás.</p>
<p>También comenté el caso de un kit de herramientas que, a gran escala, <strong>ha robado unas 50.000 credenciales de acceso buscando copias de seguridad olvidadas</strong>, como un <code>wp-config.php.bak</code>, un <code>debug.log</code> o las contraseñas que guardan algunos plugins de correo SMTP. Ojito con lo que dejas tirado en el servidor.</p>
<p>Aproveché para hablar de Vigilante 3.0.0, que ahora intenta autoprotegerse. No es invulnerable (nada lo es, y el propio plugin tuvo su vulnerabilidad, de la que aprendí bastante y que os contaré en el blog), pero <strong>se trata de ponerle al campo todas las puertas que puedas</strong>.</p>
<h3>Elementor y un clic que crea administradores</h3>
<p>Elementor ha tenido una semana movidita. Patchstack publicó el 25 de septiembre una vulnerabilidad CSRF (falsificación de peticiones entre sitios) en las versiones 4.3.0 y 4.3.1, con un CVSS de 8,8. <strong>Un administrador con la sesión abierta que hiciera clic en un enlace manipulado podía crear, sin enterarse, otra cuenta de administrador</strong> para el atacante. Está corregida desde la 4.3.2, y con los millones de webs que lo usan todavía queda muchísima gente sin actualizar.</p>
<p>Ya que hablábamos de actualizar, os enseñé mi guía sobre por qué WordPress se actualiza sin tu permiso aunque hayas desactivado las actualizaciones automáticas. <strong>Muchos hostings tienen su propio sistema, que trabaja en un plano donde lo que pongas en WordPress les da igual</strong>, y en la guía repaso los tres casos (alojamiento gestionado, compartido con autoinstalador y servidor propio) y cómo controlar cuándo se actualiza. Mi consejo sigue siendo actualizar, y si tu hosting lo hace por ti y encima hace copia antes, te está haciendo un favor.</p>
<h3>Comunidad: WordPress al frente de la Open Website Alliance y adiós a Meetup</h3>
<p>La parte alegre. <strong>WordPress, a través de la WordPress Foundation, ha asumido la presidencia rotatoria de la Open Website Alliance</strong>, la coalición que agrupa a las organizaciones detrás de WordPress, Drupal, Joomla, TYPO3 y compañía. Se anunció el 25 de septiembre y una de sus líneas de trabajo es la Ley de Ciberresiliencia europea, sobre la que firmaron un informe en agosto. Las normativas europeas tienen su parte buena, siempre que no se vayan de olla y no frenen la innovación con la excusa de protegernos.</p>
<p>La otra noticia chula es events.wordpress.org: <strong>la comunidad va a dejar Meetup.com para usar un sistema propio integrado en WordPress.org</strong>. Ya se ha hecho formación para organizadores y el piloto está en marcha. El punto débil es que, por privacidad, probablemente no se migren las listas de asistentes y haya que animar a la gente a registrarse de nuevo. Si organizas un meetup en España o en cualquier país hispanohablante, te animo a apuntarte al programa piloto desde el equipo de comunidad en make.wordpress.org/community.</p>
<p>Y octubre viene animadísimo:</p>
<ul>
<li>WordPress Agency Forum, el 7 de octubre en Madrid, un evento para profesionales con mucho trabajo en grupo y aforo muy limitado.</li>
<li>WordPress Accessibility Day, el 7 y 8 de octubre, online y gratuito, desde las 17:00 (hora peninsular) y con el responsable de accesibilidad de GitHub abriendo el programa.</li>
<li>Meetups en Palma, Collado Villalba y León, entre otros.</li>
<li>Meetup de A Coruña el 15 de octubre, donde daré una charla sobre seguridad en WordPress con presupuesto cero.</li>
<li>WordCamp Galicia, el 16 de octubre en A Coruña, donde daré un curso gratuito de WordPress a primera hora.</li>
<li>WordCamp Valencia, el 31 de octubre, donde también tendré la suerte de dar una charla.</li>
</ul>
<h3>WooCommerce 11.2 y las nuevas obligaciones europeas</h3>
<p>WooCommerce 11.2 tenía que salir el 6 de octubre con estas novedades:</p>
<ul>
<li>Correos configurables para el derecho de desistimiento.</li>
<li>Campos de fecha en la API de pago con el selector nativo del navegador, útiles para fechas de nacimiento o de entrega.</li>
<li>Un importador CSV que por fin encuentra productos por GTIN, UPC, EAN o ISBN cuando no hay ID ni SKU.</li>
</ul>
<p>Lo del <em>checkout</em> basado en agentes de IA se ha aparcado, así que eso no romperá nada. <strong>Lo que sí conviene revisar con tu desarrollador son los filtros de fecha</strong> si tienes algún desarrollo a medida.</p>
<p>Hablando de obligaciones de la UE, he actualizado mi plugin de derecho de desistimiento para que también muestre la etiqueta de garantía legal, obligatoria desde el 27 de septiembre para quien venda bienes físicos en la Unión Europea. Revisé los plugins que había, <strong>ninguno lo daba todo gratis, así que se lo añadí al mío en una mañana</strong>. En el artículo os comparo las opciones y elegís vosotros.</p>
<h3>Lo último que he publicado en el blog</h3>
<p>También repasé algunos artículos recientes de Ayuda WordPress que creo que os pueden venir bien:</p>
<ul>
<li>Las zonas, clases y métodos de envío de WooCommerce, de lo más raro que tiene el plugin desde siempre y de lo que más me preguntan los clientes.</li>
<li>Cómo servir actualizaciones automáticas de tus propios plugins y temas desde tu web, con el sistema nativo de WordPress y sin obligar al cliente a instalar nada extra. Es lo que uso con plugins premium como Intelimerce.</li>
<li>Dónde poner el código que comparto: <code>functions.php</code> solo para lo que depende del tema, un plugin propio para lo demás y ojo con abusar de los <em>mu-plugins</em>.</li>
</ul>
<h3>Multisitio, robots.txt y un usuario que me hace trabajar</h3>
<p>Saludé a Albert Calzada, un usuario de Vigilante con una red multisitio que me ha ido avisando de cosas mejorables, y gracias a él <strong>Vigilante 3.1 se lleva bastante mejor con multisitio</strong>. Yo recomiendo multisitio para muy pocos casos (él lo usa para webs multilingües, uno de los pocos donde tiene sentido), y por eso casi ningún plugin está bien preparado para él.</p>
<p>Un ejemplo práctico: en una red multisitio con dominios mapeados, <strong>si tienes un robots.txt físico en el sitio principal, todos los sitios comparten ese mismo archivo</strong>. La solución es tirar del robots.txt virtual que WordPress genera de serie y que mi plugin SEO Visibility permite editar por sitio, igual que el llms.txt. Así lo resolví con un cliente que quería bloquear los PDF en el sitio principal pero no en los subsitios.</p>
<h3>WordPress e IA: Novamira, Presence API y un invento raro de Automattic</h3>
<p>Novamira es un plugin que conecta agentes de IA con WordPress mediante un servidor MCP (que, para entendernos, funciona como una API para agentes). Da acceso a ejecución de PHP, sistema de archivos, base de datos, WP-CLI y Gutenberg, se configura con <em>abilities</em>, <em>skills</em> en Markdown y políticas propias, y tiene versión gratuita y una Pro por 49 al año. Me han pedido compatibilidad con SEO Visibility y lo más probable es que le añada la Abilities API (Vigía ya la tiene). <strong>Casi todos los consejos de un chatbot sobre WordPress fallan porque no sabe qué hay en tu web</strong>, y con este tipo de integración sí lo sabe.</p>
<p>También comenté la Presence API, presentada en abril, que muestra en la barra de administración una etiqueta cuando un agente de IA está editando por API o MCP.</p>
<p>Y lo que más me sorprendió: Automattic ha lanzado sin hacer ruido una plataforma que convierte lo que genera un agente de IA en una web con su propia dirección, al estilo de Astro o Next.js. Lo que no entiendo es que, cuando en Twitter le preguntaron a Matt qué iba a hacer WordPress para competir con este tipo de herramientas, enlazara esto. <strong>Con todo lo que tiene WordPress ahora mismo (MCP, Abilities API, Presence API), promocionar otra cosa me parece un tiro en el pie.</strong></p>
<h3>SEO: Google, cada vez más peaje y menos tráfico</h3>
<p>Las AI Overviews ya aparecen en el 80 % de las búsquedas de marca, y sus enlaces ni siquiera llevan a la web de la marca, sino al modo IA. Además, Merchant Center ha activado automáticamente el <em>checkout</em> nativo en el modo IA y en Gemini para las tiendas compatibles con UCP (un protocolo parecido a MCP pero para comercio electrónico). Puedes vender ahí, sí, pero <strong>es como Amazon: al final vas a pagar un peaje</strong>.</p>
<p>Google ya ha empezado a pagar a unos 100 medios por usar su contenido en las vistas creadas con IA, en un programa piloto que supone en torno al 0,1 % de sus ingresos publicitarios. Migajas, pero algo es algo. Y mientras tanto sus directrices piden revisar a mano todo el contenido hecho con IA y dicen que el bueno es el humano, justo el que se está quedando sin incentivos porque ni le dan tráfico, ni enlaces, ni dinero. <strong>Pone normas como si fuera la Unión Europea, pero no hace nada por devolver el tráfico.</strong></p>
<h3>Un hackeo con spam japonés y por qué un 410 lo arregló</h3>
<p>Os conté el caso que explico en mi artículo sobre redirecciones 301, errores 404 y 410. A un cliente le hackearon la web y le llenaron Google de URLs con spam en japonés que desplazaron sus resultados de toda la vida (con los maravillosos filtros antispam de Google mirando para otro lado). Después de limpiar la web, <strong>marcar esas URLs con un 410 hizo que en pocos días desaparecieran del índice</strong> y volvieran a salir las buenas. Lo hice con SEO Visibility, que para eso lo tengo.</p>
<p>También os enseñé el nuevo apartado de «navegación agéntica» que aparece en PageSpeed Insights, que incluso mira el llms.txt, a pesar de que Google dice que pasa de él. En un artículo os explico qué mide y si tenéis que hacer algo, porque vuestros clientes os lo van a preguntar. Para medir estas señales tenéis mi analizador de visibilidad y una auditoría SEO automática más completa, y si no os llega os ofrezco una personalizada.</p>
<p>Respondiendo a un comentario sobre si ayuda mandar traducciones de plugins a WordPress.org: <strong>ayuda muchísimo</strong>, aunque yo no pueda aprobarlas, porque hace que el plugin llegue a más gente en su idioma. Y aproveché para soltar una opinión mía: tengo la sensación de que en el directorio se confía menos en los desarrolladores con apellidos que no suenan anglosajones, algo que comentan mucho los desarrolladores de la India. Llámame loco, pero se nota.</p>
<p>Vídeo completo: <a href="https://www.youtube.com/watch?v=4MWYMHWpVxU">Crónicas WordPress del 5 de octubre en YouTube</a></p>
<div class="ast-oembed-container " style="height: 100%;"><iframe title="WordPress explotado en 5 horas, malware que resucita y Google se queda tus ventas #CrónicasWordPress" width="1600" height="900" src="https://www.youtube.com/embed/4MWYMHWpVxU?feature=oembed&amp;enablejsapi=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p>Si quieres asistir en directo y participar con tus preguntas, suscríbete al <a href="https://www.youtube.com/@AyudaWPes">canal de Ayuda WordPress en YouTube</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/wordpress-7-1-2-a-toda-prisa-malware-de-ocho-cabezas-adios-a-meetup-y-google-cobrando-peaje-cronicaswordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tengo una página que no se si hacer Disallow, noindex o sacarla del mapa del sitio ¿importa o da igual?</title>
		<link>https://ayudawp.com/disallow-noindex-sitemap/</link>
					<comments>https://ayudawp.com/disallow-noindex-sitemap/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Thu, 08 Oct 2026 06:28:37 +0000</pubDate>
				<category><![CDATA[SEO / AEO / GEO / AIO]]></category>
		<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[nofollow]]></category>
		<category><![CDATA[noindex]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[robots.txt]]></category>
		<category><![CDATA[Visibility]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160480</guid>

					<description><![CDATA[Hay tres herramientas que casi todo el mundo usa como si fueran la misma cosa, el Disallow del robots.txt, la etiqueta meta noindex y el mapa del sitio, no hacen lo mismo, y mezclarlas sale caro.]]></description>
										<content:encoded><![CDATA[<p>Hay tres herramientas que casi todo el mundo usa como si fueran la misma cosa, el <code>Disallow</code> del <code>robots.txt</code>, la etiqueta meta <code>noindex</code> y el mapa del sitio (el sitemap XML ese de siempre), y no hacen lo mismo ni de lejos, así que <strong>mezclarlas sale caro</strong>.</p>
<p>Las dudas que me llegan son casi siempre estas, y las trataré de contestar todas a lo largo del artículo:</p>
<ul>
<li>Mi aviso legal y mi política de privacidad, ¿los pongo en <code>Disallow</code>, en <code>noindex</code> o en las dos cosas?</li>
<li>¿Los dejo en el mapa del sitio o los quito?</li>
<li>¿Por qué Google Search Console me dice que una página está indexada si yo la había bloqueado?</li>
<li>¿Qué hago con la página de agradecimiento, con los filtros de mi tienda o con esa entrada del blog que no pega con el resto?</li>
</ul>
<p>Si lo tienes claro no sé que haces leyendo aún, sino pues tira, que aquí se viene a aprender, y un poco a discutir también…</p>
<h2>Tres herramientas, tres preguntas distintas</h2>
<p>La forma más fácil de recordarlo es pensar en un edificio de oficinas, o un centro comercial de varias plantas, lo que mejor te encaje o apetezca.</p>
<p>Digamos que el <code>Disallow</code> es el portero, que decide quién pasa a qué plantas o departamentos.  Luego estaría el <code>noindex</code>, que sería como un cartel dentro que dice algo como «Zona privada: prohibido el paso», y terminaríamos con el mapa del sitio, que sería el directorio de secciones o departamentos, de cada planta, que no muestra todo lo que hay, sino solo lo que quieres facilitar el acceso.</p>
<p>Otro modo de explicarlo, ya el de verdad, sería así:</p>
<ul>
<li><strong>Disallow </strong>(en <code>robots.txt</code>)<strong>:</strong> responde a «¿Puede pasar por aquí el rastreador/crawler?». Google explica en su <a href="https://developers.google.com/search/docs/crawling-indexing/robots/intro" target="_blank" rel="nofollow noopener">documentación sobre el robots.txt</a> que sirve sobre todo para no saturar tu web de peticiones y <strong>que no es un mecanismo para mantener una página fuera de Google</strong>, porque si otra web enlaza esa URL Google puede indexarla igualmente, aunque no haya podido leerla.</li>
<li><strong>Noindex</strong> (en el código fuente)<strong>:</strong> responde a «¿Debe salir salir esta URL en los resultados de búsqueda?». Google entra, lee la página, encuentra la etiqueta (o la cabecera HTTP equivalente) y, según su <a href="https://developers.google.com/search/docs/crawling-indexing/block-indexing" target="_blank" rel="nofollow noopener">guía del noindex</a>, <strong>la saca por completo de los resultados</strong>, aunque otras webs la enlacen.</li>
<li><strong>Mapa del sitio</strong> (archivo <code>wp-sitemap.xml</code> o similar en la raíz del sitio)<strong>:</strong> responde a «¿Quieres que pase a ver esta URL?». Es la lista de contenidos que te gustaría que aparezcan en las SERP, y así lo plantea la <a href="https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap" target="_blank" rel="nofollow noopener">guía de Google para crear un sitemap</a>. Que una URL esté en la lista no garantiza que se indexe, ojo, es solo tu forma de decirle cuáles prefieres.</li>
</ul>
<h2>El error más habitual: Disallow y noindex a la vez</h2>
<p>Si bloqueas una URL con <code>Disallow</code> y además le pones <code>noindex</code>, el <code>noindex</code> no sirve de nada, porque <strong>el rastreador no llega a entrar para leerlo</strong>. Es el cartel de la oficina con el portero delante, y nadie llega a verlo.</p>
<p>Lo dice la propia guía del <code>noindex</code> de Google, y es que <strong>para que funcione la página no puede estar en <code>Disallow</code> en el <code>robots.txt</code>, porque si lo está el rastreador nunca verá la regla</strong> y la página puede seguir apareciendo en los resultados si otras páginas la enlazan.</p>
<p>En Search Console lo vas a ver como el aviso <em>«<strong>Se ha indexado aunque un archivo robots.txt la tenía bloqueada</strong>»</em>, dentro del informe de indexación de páginas.</p>
<p>Google explica ahí que la página se ha indexado a pesar del bloqueo porque ha encontrado un enlace a ella en otra web, y que al estar bloqueada <strong>los snippets que salen en los resultados suelen ser muy limitados</strong>.</p>
<p><strong>Pasa lo mismo al revés</strong>. Si quieres que Google sepa que una URL es <code>noindex</code> y no le dejas rastrearla, no se va a enterar. <strong>Lo que toca es dejar el <code>noindex</code> y quitar el <code>Disallow</code></strong>, esperar a que Google vuelva a pasar y, cuando la URL ya haya salido de los resultados, decidir si además quieres ahorrarte el rastreo.</p>
<h2>Qué usar en cada caso</h2>
<p>Esta tabla resume los casos más habituales, y debajo explico los que necesitan algún matiz.</p>
<table style="border-collapse: collapse; width: 100%;" border="1" cellpadding="6">
<thead>
<tr>
<th>Caso</th>
<th>Disallow</th>
<th>Noindex</th>
<th>Mapa del sitio</th>
<th>Por qué</th>
</tr>
</thead>
<tbody>
<tr>
<td>Aviso legal, privacidad, cookies</td>
<td>No</td>
<td>No</td>
<td>Sí</td>
<td>Las legislaciones piden que estén disponibles no que salgan en Google</td>
</tr>
<tr>
<td>Envíos, devoluciones, garantía</td>
<td>No</td>
<td>No</td>
<td>Sí</td>
<td>Para el marcado de políticas de envío y devolución Google pide que la página no esté bloqueada por <code>robots.txt</code>, <code>noindex</code> ni requiera inicio de sesión</td>
</tr>
<tr>
<td>Quiénes somos, contacto</td>
<td>No</td>
<td>No</td>
<td>Sí</td>
<td>Google cita la página «Acerca de» y las páginas de autor entre lo que ayuda al lector a fiarse de un sitio (EEAT)</td>
</tr>
<tr>
<td>Carrito, pago, mi cuenta</td>
<td>No</td>
<td>Sí (WooCommerce ya lo pone)</td>
<td>No</td>
<td>Con un <code>Disallow</code> Google no llegaría a ver el <code>noindex</code></td>
</tr>
<tr>
<td>Filtros y ordenación de la tienda</td>
<td>Sí</td>
<td>Solo si ya se han indexado, y antes del Disallow</td>
<td>No</td>
<td>Google recomienda bloquear el rastreo de estas URLs si no las necesitas indexadas</td>
</tr>
<tr>
<td>Página de agradecimiento</td>
<td>No</td>
<td>Sí</td>
<td>No</td>
<td>No aporta nada en los resultados y solo le interesa a quien acaba de comprar o suscribirse</td>
</tr>
<tr>
<td>Oferta, sorteo o empleo caducados</td>
<td>No</td>
<td>Depende</td>
<td>No</td>
<td>Lo normal es redirigir (301) o borrar (<a href="https://ayudawp.com/contenido-borrado-301-410/" target="_blank" rel="noopener">410</a>)</td>
</tr>
<tr>
<td>Entrada de blog que no pega con el resto</td>
<td>No</td>
<td>Depende</td>
<td>Depende</td>
<td>Depende de si aporta algo a quien lo lea</td>
</tr>
<tr>
<td>Contenido duplicado con canonical a otra URL</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>En el mapa del sitio va la URL preferida, y el <code>noindex</code> no es la forma de elegir la canónica</td>
</tr>
<tr>
<td>Web de pruebas</td>
<td>No</td>
<td>Sí, o mejor una contraseña</td>
<td>No</td>
<td>El <code>Disallow</code> no la saca de Google, y para eso la propia Google habla de <code>noindex</code> o de protegerla con contraseña</td>
</tr>
</tbody>
</table>
<h3>Los filtros y la ordenación de una tienda</h3>
<p>Los filtros de WooCommerce (color, talla, precio…) generan una URL distinta por cada combinación, con parámetros como <code>filter_</code>, <code>min_price</code>, <code>max_price</code> u <code>orderby</code>.</p>
<p>En su guía sobre <a href="https://developers.google.com/crawling/docs/faceted-navigation" target="_blank" rel="nofollow noopener">navegación por facetas</a> <strong>Google recomienda que si no necesitas esas URLs indexadas bloquees su rastreo</strong> con el <code>robots.txt</code>, y del <code>canonical</code> y del <code>nofollow</code> dice que suelen ser menos efectivos a largo plazo. Un ejemplo sencillo sería este:</p>
<pre>User-agent: *
Disallow: /*?*filter_
Disallow: /*?*min_price=
Disallow: /*?*max_price=
Disallow: /*?*orderby=</pre>
<p>Si esas URLs ya están indexadas el <code>Disallow</code> no las va a sacar de Google, así que <strong>primero se pone el <code>noindex</code> , y cuando han desaparecido se bloquea</strong>. Y pruébalo siempre antes, que un patrón mal escrito puede llevarse por delante más URLs de las que querías.</p>
<p>El <a href="https://herramientas.ayudawp.com/robots-txt/" target="_blank" rel="ugc noopener">validador de robots.txt</a> comprueba la sintaxis, y después conviene vigilar el informe de indexación de páginas de Search Console por si empiezan a aparecer URLs bloqueadas que no esperabas.</p>
<h3>Ofertas, sorteos y empleos que ya han caducado</h3>
<p>Si la página tiene enlaces o visitas, lo normal es redirigirla a la oferta vigente o a la categoría, y si no tiene nada que aportar, borrarla y dejar que dé un 410 o un 404.</p>
<p>Aquí el <code>noindex</code> solo tiene sentido si la página debe seguir existiendo para quien ya la conoce, como el histórico de ganadores de un sorteo. Lo tienes explicado con detalle en el artículo sobre <a href="https://ayudawp.com/contenido-borrado-301-410/" target="_blank" rel="ugc noopener">qué hacer con la URL de un contenido borrado</a>.</p>
<h3>La entrada de blog que no tiene mucho que ver con el resto de tu web</h3>
<p>Este es el caso más discutible, y lo siguiente es mi opinión y no una regla o algoritmo de Google. De hecho ya te anticipo que, que yo sepa, Google no dice en ningún sitio que una entrada totalmente ajena a la temática habitual perjudique al resto de tu web, lo que sí pregunta en su <a href="https://developers.google.com/search/docs/fundamentals/creating-helpful-content" target="_blank" rel="nofollow noopener">guía de contenido útil</a> es si tu sitio tiene un propósito o un enfoque principal.</p>
<p>Tampoco te hagas ilusiones con borrar, porque esa misma guía avisa de que quitar mucho contenido antiguo para que el sitio parezca más fresco no funciona.</p>
<p>Mi criterio es que, si la entrada enseña de verdad a las personas del equipo, cuenta cómo trabajáis o qué os importa, funciona como una extensión de tu página de «Quiénes somos», así que lo dejaría indexable y, solo que si no quieres tampoco reforzarla, la dejes fuera del mapa del sitio.</p>
<p>Si es una entrada de blog puramente de relleno con tres fotos y dos líneas, la mejoraría, la fusionaría con otra o le pondría <code>noindex</code> y arreando. Y si al final la borras, pues que vaya con redirección o un bonito 410.</p>
<h3>Contenido duplicado con canonical a otra URL</h3>
<p>Cuando la misma página existe en dos URLs (un artículo que re-publicas en otro sitio, una variante de una landing), <strong>en el mapa del sitio va la URL que prefieres y no la otra</strong>.</p>
<p>Google lo recuerda en su <a href="https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls" target="_blank" rel="nofollow noopener">guía de canonicalización</a>, donde pide no indicar una URL en el mapa del sitio y otra distinta como canónica para la misma página. Y para elegir la canónica tampoco uses noindex, porque según esa misma guía bloquearía la página por completo en la búsqueda.</p>
<p>Si tu plugin de SEO no saca solo del mapa del sitio las páginas con canonical a otra URL (no todos lo hacen), sácala tú a mano.</p>
<h2>¿Y qué hacemos con la mierda esa de las páginas legales, las indexamos o no?</h2>
<p>Para empezar, <strong>ninguna norma te obliga a indexar el aviso legal, la política de privacidad o la de cookies, pero tampoco nada te lo prohíbe</strong>, lo que piden las legislaciones y reglamentos es que el usuario las vea fácilmente, que no las ocultes.</p>
<p>La LSSI, en su <a href="https://www.boe.es/buscar/act.php?id=BOE-A-2002-13758" target="_blank" rel="nofollow noopener">artículo 10</a>, pide que los datos del titular de la web estén disponibles «de forma permanente, fácil, directa y gratuita», y la <a href="https://lssi.digital.gob.es/lssi/la-ley/preguntas-frecuentes" target="_blank" rel="nofollow noopener">página oficial de la ley</a> aclara que basta con que sean accesibles mediante enlaces visibles con títulos claros, como el típico «quiénes somos».</p>
<p>Con el RGPD pasa algo parecido, y la Agencia Española de Protección de Datos habla en su <a href="https://www.aepd.es/guias/informe-politicas-de-privacidad-adaptacion-rgpd.pdf" target="_blank" rel="nofollow noopener">informe sobre políticas de privacidad</a> de información de fácil acceso, con enlaces en el pie de página y al final de los formularios.</p>
<p><strong>Ni la ley ni el informe de la AEPD mencionan a los buscadores.</strong> Eso sí, yo no soy abogado, así que si tu caso tiene alguna particularidad consúltalo con quien te lleve lo legal.</p>
<p>¿Y Google? En su documentación no he encontrado ninguna regla específica para las páginas legales, así que aquí no hay una verdad oficial a la que agarrarse y toca razonarlo con lo que hace cada herramienta.</p>
<ul>
<li><strong>Disallow:</strong> no sirve para nada, porque no las saca de Google (si alguien las enlaza se pueden indexar igualmente) y encima impediría leer un <code>noindex</code>.</li>
<li><strong>noindex:</strong> las quitaría de los resultados, pero tus visitantes las seguirían encontrando en el enlace del pie, que es lo que pide la ley. Puedes hacerlo sin incumplir nada de lo que he leído, aunque tampoco ganas nada.</li>
<li><strong>Mapa del sitio:</strong> si las dejas indexables, van como cualquier otra página normal.</li>
</ul>
<p>Mi consejo, y es solo eso, un consejo, es<strong> ni Disallow ni noindex</strong>, y si las tienes ahora mismo en <code>noindex</code> tampoco es ningún drama, de hecho yo mi me acordaba y las tenía así de siempre.</p>
<p>Queda el argumento del E-E-A-T, que es el otro que se oye mucho. Google dice en su guía de contenido útil que el E-E-A-T en sí mismo no es un factor de posicionamiento concreto, y cuando habla de lo que ayuda a fiarse de un sitio cita las páginas de autor y la de «Acerca de», sin nombrar las legales.</p>
<p><strong>Lo que sí suma es que se vea quién está detrás de la web</strong> y, en una tienda, cómo son sus envíos y sus devoluciones, y por eso esas páginas van indexables en la tabla.</p>
<h2>Aplicarlo en WordPress, a mano o con plugin</h2>
<p><strong>El <code>Disallow</code> va en el <code>robots.txt</code>.</strong> WordPress genera uno virtual que solo bloquea <code>/wp-admin/</code> (dejando pasar el <code>admin-ajax.php</code>).</p>
<p>Puedes ampliarlo desde un plugin de SEO, y varios traen editor para ello (Visibility, el <del>mejor</del> mío incluido), o subiendo tú un archivo <code>robots.txt</code> real a la raíz de tu web.</p>
<p>Si no quieres escribirlo a mano, el generador de <a href="https://herramientas.ayudawp.com/robots-txt/" target="_blank" rel="ugc noopener">esa misma herramienta</a> te crea uno con las carpetas y los bots que elijas.</p>
<p>Ah, y ojo con la opción «Pedir a los motores de búsqueda que no indexen este sitio» de los ajustes de lectura de tu WordPress, porque mucha gente cree que mete un <code>Disallow: /</code> y lo que hace desde WordPress 5.3 es poner <code>noindex</code> a todo el sitio, como <a href="https://ayudawp.com/wordpress-5-3-cambiara-modo-evitar-indexado-buscadores/" target="_blank" rel="ugc noopener">conté en su día</a>.</p>
<p><strong>El <code>noindex</code> se pone por página</strong>, y para ello Yoast SEO, Rank Math, All in One SEO, SEOPress y Visibility tienen <strong>una casilla en el editor de cada entrada o página</strong>.</p>
<p><a href="https://ayudawp.com/?attachment_id=160491" rel="nofollow"><img fetchpriority="high" decoding="async" class="sombra alignnone wp-image-160491 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/visibility-noindex-sitemap-nofollow-wp-editor-1200x506.jpg" alt="" width="1200" height="506" srcset="https://ayudawp.com/wp-content/uploads/2026/10/visibility-noindex-sitemap-nofollow-wp-editor-1200x506.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/visibility-noindex-sitemap-nofollow-wp-editor-768x324.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/visibility-noindex-sitemap-nofollow-wp-editor-1536x648.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/visibility-noindex-sitemap-nofollow-wp-editor.jpg 1598w" sizes="(max-width: 1200px) 100vw, 1200px"></a></p>
<p>Si prefieres hacerlo a mano este código se lo añade a las páginas que le indiques:</p>
<pre>// Añadir noindex a páginas específicas
add_filter( 'wp_robots', 'ayudawp_noindex_paginas_concretas' );

function ayudawp_noindex_paginas_concretas( $robots ) {
    // Reemplaza los slugs con las páginas que quieras dejar fuera de los resultados
    if ( is_page( array( 'gracias', 'pedido-recibido' ) ) ) {
        $robots['noindex'] = true;
    }

    return $robots;
}</pre>
<p>Y con el mapa del sitio hay que ir con más cuidado, porque <strong>el nativo de WordPress no sabe nada de <code>noindex</code></strong> y lista todas las páginas publicadas (salvo que uses Visibility, que se integra con él y te deja personalizar eso y más cosas).</p>
<p>Por lo que se ve en el código, WooCommerce pone <code>noindex</code> al carrito, al pago y a mi cuenta, pero no las quita del mapa del sitio, eso sería cosa tuya, así que compruébalo abriendo <code>/wp-sitemap-posts-page-1.xml</code> en tu web.</p>
<p style="color: #cc0000;"><a href="https://ayudawp.com/?attachment_id=160490" rel="nofollow"><img decoding="async" class="sombra alignnone wp-image-160490 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/sitemap-cart-checkout-account-1200x1203.jpg" alt="" width="1200" height="1203" srcset="https://ayudawp.com/wp-content/uploads/2026/10/sitemap-cart-checkout-account-1200x1203.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/sitemap-cart-checkout-account-150x150.jpg 150w, https://ayudawp.com/wp-content/uploads/2026/10/sitemap-cart-checkout-account-768x770.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/sitemap-cart-checkout-account-1532x1536.jpg 1532w, https://ayudawp.com/wp-content/uploads/2026/10/sitemap-cart-checkout-account.jpg 1920w" sizes="(max-width: 1200px) 100vw, 1200px"></a></p>
<p>Los plugins de SEO (Yoast SEO, Rank Math, All in One SEO, SEOPress y Visibility) pueden quitar del mapa del sitio lo que marcas como <code>noindex</code>. Para sacar páginas concretas sin ponerles <code>noindex</code>, Rank Math y All in One SEO tienen una lista de exclusión, Visibility una casilla en cada entrada (la puedes ve en la captura de más arriba, y Yoast solo lo permite por código.</p>
<p>Con el mapa nativo, a mano si tu plugin no lo contempla, sería así:</p>
<pre>// Dejar fuera del mapa del sitio de WordPress páginas específicas
add_filter( 'wp_sitemaps_posts_query_args', 'ayudawp_excluir_paginas_del_sitemap', 10, 2 );

function ayudawp_excluir_paginas_del_sitemap( $args, $post_type ) {
    if ( 'page' !== $post_type ) {
        return $args;
    }

    // Reemplaza lo siguiente con los IDs de las páginas que quieras dejar fuera
    $excluded = array( 123, 456 );

    $args['post__not_in'] = array_merge( (array) ( $args['post__not_in'] ?? array() ), $excluded );

    return $args;
}</pre>
<p>Si dudas de dónde meter estos fragmentos, lo tienes explicado en el artículo sobre <a href="https://ayudawp.com/pegar-codigos/" target="_blank" rel="ugc noopener">dónde pegar códigos PHP, JS y CSS en WordPress</a>.</p>
<h2>Comprobarlo en Search Console</h2>
<p>Con la herramienta de inspección de URLs ves cómo ha rastreado e indexado Google una página concreta, y en el informe de indexación de páginas te salen los avisos que más te interesan aquí.</p>
<ul>
<li><strong>«Se ha indexado aunque un archivo robots.txt la tenía bloqueada»:</strong> es el error de Disallow más noindex del que hablábamos, y se arregla quitando el Disallow.</li>
<li><strong>«Página alternativa con etiqueta canónica adecuada»:</strong> es lo normal en las páginas que apuntan con su canonical a otra, y lo que quieres ver.</li>
<li><strong>«Duplicada: Google ha elegido una versión canónica diferente a la del usuario»:</strong> Google no ha hecho caso a tu canonical, así que revisa que el mapa del sitio, tus enlaces internos y la propia etiqueta apunten todos a la misma URL.</li>
</ul>
<h2>Tres preguntas antes de tocar nada</h2>
<p>Cuando dudes con una página, hazte estas preguntas en este orden.</p>
<ol>
<li>¿Quiero que Google pueda entrar a verla? Si no, <code>Disallow</code>, pero solo si no necesitas que lea un <code>noindex</code>.</li>
<li>¿Quiero que la enseñe en los resultados? Si no, <code>noindex</code>, y con la puerta abierta para que pueda leerlo.</li>
<li>¿Quiero recomendársela? Si sí, al mapa del sitio y con la URL que prefieres.</li>
</ol>
<p>Si tienes alguna página que no sabes en cuál de estos casos encaja, me tienes ahí abajo, en los comentarios, y la miramos.</p>
<p>Si lo que te preocupa es la web al completo pásala por la <a href="https://herramientas.ayudawp.com/auditoria-seo/" target="_blank" rel="ugc noopener">auditoría SEO gratuita</a>, que revisa entre otras cosas el <code>robots.txt</code>, los mapas del sitio y la indexación, y si después te siguen quedando dudas puedes pedirme un análisis más completo al final del informe, también gratis.</p>
<p>Por si quieres seguir con el tema, tengo más escrito sobre los <a href="https://ayudawp.com/archivos-fecha-seo/" target="_blank" rel="ugc noopener">archivos por fecha</a> y los <a href="https://ayudawp.com/indexar-archivos-autor/" target="_blank" rel="ugc noopener">archivos de autor</a>, sobre cómo <a href="https://ayudawp.com/mapas-del-sitio-xml-wordpress/" target="_blank" rel="ugc noopener">configurar el mapa del sitio nativo</a>, sobre el <a href="https://ayudawp.com/robots-txt-wordpress-multisitio/" target="_blank" rel="ugc noopener">robots.txt en multisitio</a> y sobre si te conviene <a href="https://ayudawp.com/bloquear-bots-ia/" target="_blank" rel="ugc noopener">bloquear a los bots de IA</a>.</p>
<p>Para todo lo demás, me preguntas ahí abajo en los comentarios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/disallow-noindex-sitemap/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Estadísticas de plugins y temas de WordPress.org ¿cómo sabes si tu plugin sube o baja?</title>
		<link>https://ayudawp.com/estadisticas-plugins-wordpress-org/</link>
					<comments>https://ayudawp.com/estadisticas-plugins-wordpress-org/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Wed, 07 Oct 2026 06:28:07 +0000</pubDate>
				<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Plugins WordPress]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Experto]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<category><![CDATA[Trac]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160429</guid>

					<description><![CDATA[WordPress.org solo da instalaciones redondeadas y descargas. Te cuento por qué no hay más datos de tus plugins y temas, y qué alternativas tienes, gratis y de pago]]></description>
										<content:encoded><![CDATA[<p>¿Tu plugin está creciendo o va para abajo?, pues WordPress.org no te lo va a decir. <strong>El directorio te da la cifra de instalaciones activas de hoy, redondeada hacia abajo, y hasta dos años de descargas diarias, y ahí se acaba la historia.</strong></p>
<p>El histórico de instalaciones, la posición de tu plugin en el buscador o lo que hace la competencia lo tienes que guardar tú, o pagar a alguien que lo guarde por ti.</p>
<p>Y te reconozco que el asunto me toca de cerca, porque tengo más de 20 plugins publicados, todos gratis, y como cualquier autor me gustaría saber cómo les va. Por todo esto llevo meses siguiendo un ticket de Trac abierto hace cuatro años, que ya pasa de 180 comentarios y en el que no se ha movido nada.</p>
<p>Vamos a ver <strong>qué te da el directorio si publicas plugins o temas en WordPress.org, por qué no te da más y qué alternativas tienes</strong> hoy, gratis y de pago.</p>
<h2>Lo que te da WordPress.org hoy (que no es mucho)</h2>
<p>Vamos a hacer un poco de leña del árbol caído, y es que esto da bastante penita, pero es lo que hay de momento.</p>
<h3>La vista «avanzada»</h3>
<p>La ficha pública de cualquier plugin te enseña las instalaciones activas, la valoración con su desglose por estrellas, los hilos de soporte resueltos en los dos últimos meses y hasta qué versión de WordPress se ha probado. Lo que te da es únicamente la foto del momento, sin evolución.</p>
<p>Si entras en la pestaña de la «<strong>Vista avanzada</strong>» de un plugin tienes algo más, tres gráficos que se llaman «<strong>Versiones activas</strong>» (qué versiones de tu plugin se usan), «<strong>Descargas por día</strong>» y el «<strong>Historial de descargas</strong>».</p>
<p>Los temas no tienen una pestaña equivalente ni de lejos, así que ahí vas todavía más a ciegas, y también por eso verás que este artículo se centra sobre todo en plugins, los desarrolladores de temas, por mucho que nos quejemos los de plugins, van aún peor.</p>
<p><a href="https://ayudawp.com/?attachment_id=160463" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160463 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/vista-avanzada-plugin-WordPress-1200x1489.jpg" alt="" width="1200" height="1489" srcset="https://ayudawp.com/wp-content/uploads/2026/10/vista-avanzada-plugin-WordPress-1200x1489.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/vista-avanzada-plugin-WordPress-768x953.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/vista-avanzada-plugin-WordPress-1238x1536.jpg 1238w, https://ayudawp.com/wp-content/uploads/2026/10/vista-avanzada-plugin-WordPress-1650x2048.jpg 1650w, https://ayudawp.com/wp-content/uploads/2026/10/vista-avanzada-plugin-WordPress.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>No es algo exclusivo del autor del plugin, puedes verlo tú, cualquier usuario, pero vamos, que tampoco es un locurón de información.</p>
<h3>Lo que te da la API pública de WordPress.org</h3>
<p>Detrás de WordPress.org hay una API pública que no pide cuenta ni clave, y es lo que leen todas las herramientas que vamos a ver luego. La he probado muchas veces, pero para tener una visión más actualizada, la he revisado recientemente por si había cambiado algo (a septiembre de 2026) y esto es lo que da:</p>
<ul>
<li><strong>Descargas diarias:</strong> <code>api.wordpress.org/stats/plugin/1.0/downloads.php?slug=tu-plugin&amp;limit=730</code> te devuelve 729 días de descargas. Ojo con esto, porque si pides más de 730 no da error, te devuelve solo los últimos 179 días y se queda tan ancha. Para temas el equivalente es <code>stats/themes/1.0/downloads.php</code>.</li>
<li><strong>Instalaciones activas:</strong> solo la cifra de hoy y redondeada, en el campo <code>active_installs</code> de la API de información de plugins y temas.</li>
<li><strong>Histórico de instalaciones:</strong> no existe. El endpoint que alimentaba el antiguo gráfico de crecimiento, <code>active-installs.php</code>, contesta con un 404.</li>
<li><strong>Versiones en uso:</strong> <code>stats/plugin/1.0/tu-plugin</code> te da el porcentaje de sitios que usan cada versión de tu plugin. Para temas no hay nada parecido.</li>
<li><strong>Búsquedas:</strong> la API de búsquedas devuelve los resultados en el mismo orden que el buscador de la web, así que se puede medir en qué puesto sale tu plugin para una búsqueda concreta. Eso sí, la medición la tienes que hacer tú cada día, porque nadie la guarda.</li>
</ul>
<p><strong>Resumiendo, todo lo que no sea la foto de hoy o las descargas de los dos últimos años, WordPress.org no lo guarda para ti.</strong> Y lo que no guardes por tu cuenta no lo vas a tener de ningún modo, al menos no tirando de la API oficial.</p>
<h3>Lo que no está en ningún sitio y me/nos gustaría saber</h3>
<p>Para que te hagas una idea de lo que falta, estas son las <strong>preguntas que cualquier desarrollador se hace y que el directorio no responde</strong>:</p>
<ul>
<li>¿Mis instalaciones suben o bajan, y desde cuándo?</li>
<li>¿Cuántas instalaciones tengo de verdad dentro de ese «10.000+»?</li>
<li>¿En qué puesto salgo cuando alguien busca «formulario de contacto» (o lo que sea que haga tu plugin)?</li>
<li>¿Quién me ha adelantado esta semana?</li>
<li>¿Cuánta gente desinstala mi plugin y en qué versión de PHP o de WordPress está?</li>
</ul>
<p>La última ni siquiera la pueden responder las herramientas externas que leen la API, solo las que meten código de telemetría en tu plugin.</p>
<h2>¿Qué significa de verdad «10.000+ instalaciones activas»?</h2>
<p>Es la típica cifra de instalaciones que ves en WordPress.org, y la respuesta corta es que tu plugin está activo en algún número de sitios <strong>entre 10.000 y 19.999</strong>, ahí es nada.</p>
<p>No hay más detalle público ni privado (que sepamos), y la cifra ni siquiera es exacta de origen.</p>
<h3>Cómo se cuentan las instalaciones activas</h3>
<p>Cada instalación de WordPress comprueba si hay actualizaciones dos veces al día (es un evento programado de WordPress, <code>wp_update_plugins</code>, que se ejecuta cada doce horas), y en esa comprobación manda a <code>api.wordpress.org</code> la lista de plugins que tiene instalados y cuáles están activos, con los temas pasa lo mismo.</p>
<p>De ahí sale la cifra de instalaciones <em>activas</em>, que cuenta los sitios con tu plugin activado, no los que lo tienen instalado y apagado.</p>
<p>Lo que no está documentado en ningún sitio público es cómo agrega WordPress.org esas comprobaciones (qué ventana de tiempo usa, cómo descarta duplicados…).</p>
<p><strong>Lo más parecido a una explicación oficial</strong> es lo que escribió Dion Hulse (dd32), del equipo de WordPress.org, en el ticket del que te hablo más abajo, en marzo de 2023: <em>«WordPress.org no comparte la cifra exacta, salvo los tramos redondeados que se muestran públicamente»</em>, porque las instalaciones activas son un dato <em>«estadísticamente quizá no correcto al 100 %, y por eso las redondeamos como lo hacemos»</em>.</p>
<p>Luego, en 2021, a raíz de unas estadísticas infladas a propósito, Samuel Wood (Otto) explicaba en el blog del equipo de plugins que no guardan esos datos en bruto más de dos días.</p>
<p><strong>O sea, que hasta la cifra que ves es una estimación, y además redondeada.</strong> Súmale que un sitio que bloquea las peticiones externas o que no puede comunicarse por lo que sea con WordPress.org no cuenta, así de simple.</p>
<h3>Cómo se redondean las instalaciones activas</h3>
<p>Aquí hay mucha confusión, así que he ido directamente al código del directorio (la función <code>sanitize_active_installs()</code> del plugin que mueve WordPress.org).</p>
<p>Y lo que he visto es que <strong>la cifra se redondea siempre hacia abajo</strong>, quedándose solo con la primera cifra significativa:</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>Instalaciones reales</th>
<th>Lo que muestra el directorio</th>
</tr>
</thead>
<tbody>
<tr>
<td>De 0 a 9</td>
<td>«Fewer than 10» (menos de 10)</td>
</tr>
<tr>
<td>De 10 a 100</td>
<td>la decena: 47 se queda en 40+</td>
</tr>
<tr>
<td>De 101 a 1.000</td>
<td>la centena: 780 se queda en 700+</td>
</tr>
<tr>
<td>De 1.001 a 10.000</td>
<td>el millar: 9.870 se queda en 9.000+</td>
</tr>
<tr>
<td>De 10.001 a 100.000</td>
<td>la decena de millar: 19.999 se queda en 10.000+</td>
</tr>
<tr>
<td>De 100.001 a 1.000.000</td>
<td>la centena de millar: 199.999 se queda en 100.000+</td>
</tr>
<tr>
<td>De 1.000.001 a 10.000.000</td>
<td>el millón: 1.999.999 se queda en «1+ million»</td>
</tr>
<tr>
<td>Más de 10.000.000</td>
<td>tope: «10+ million»</td>
</tr>
</tbody>
</table>
</div>
<p>Es como una báscula que solo mira la primera cifra, pesas 79 kilos y marca 70, engordas ocho y sigue marcando 70.</p>
<p>Seguro que has leído, porque circula mucho, que «10.000+» puede significar cualquier cosa hasta 49.999. Lo dice por ejemplo Matt Cromwell en <a href="https://mattcromwell.com/tips/what-does-active-installs-mean-in-the-wordpress-plugin-directory/" target="_blank" rel="nofollow noopener">su artículo sobre qué significan las instalaciones activas</a> (actualizado en agosto de 2025), y tiene toda la razón en lo de fondo, que es un tramo y no una cifra.</p>
<p>Ahora bien, <strong>con el código actual el tramo de «10.000+» acaba en 19.999, no en 49.999</strong>, y en la API ves tramos intermedios como 2.000, 4.000 o 9.000 que con la otra lectura no existirían.</p>
<p>Lo que sí es cierto es que el error puede ser enorme, pues <strong>un plugin que marca «10.000+» puede tener casi el doble de usuarios, y entre «1+ million» y «2+ million» caben un millón de sitios.</strong></p>
<p>El resultado de toda esta inconsistencia y falta de datos reales es que si tu plugin está en la parte alta de un tramo puedes crecer durante meses sin que la ficha se mueva ni un número.</p>
<h2>Cuatro años de ticket: por qué quitaron el gráfico y qué ha pasado desde entonces</h2>
<p>Hagamos recopilación de la (triste) historia de esta queja constante de los desarrolladores de plugins y temas.</p>
<h3>2022: el gráfico desaparece</h3>
<p>Hasta septiembre de 2022 la pestaña de la vista avanzada tenía un gráfico de crecimiento de instalaciones activas. No daba cifras exactas, pero <strong>te decía si ibas para arriba o para abajo</strong>, que para un desarrollador es importante.</p>
<p>El 29 de septiembre de 2022 Scott Reilly lo retiró con el <a href="https://meta.trac.wordpress.org/changeset/12097" target="_blank" rel="nofollow noopener">changeset 12097</a>, con un mensaje que dice que se quitaba <em>«por una ofuscación insuficiente de los datos»</em>, o sea, que con ese gráfico se podía deducir lo que el redondeo pretendía esconder.</p>
<p>Al día siguiente Mark Zahra abrió el <a href="https://meta.trac.wordpress.org/ticket/6511" target="_blank" rel="nofollow noopener">ticket #6511</a>, que empezó pidiendo que volviera el gráfico y que semanas después cambió su título a «Provide helpful plugin stats and insights» (<em>dadnos estadísticas útiles</em>, vaya).</p>
<p>Matt Mullenweg explicó en el ticket que había <em>«servicios comerciales y gratuitos de terceros extrayendo estos datos de forma masiva»</em> y que sí veía posible enseñar más estadísticas a cada autor sobre sus propios plugins, algo que <em>«llevará trabajo, pero se puede hacer»</em>.</p>
<p>En <a href="https://wptavern.com/wordpress-org-removes-active-install-growth-data-for-plugins" target="_blank" rel="nofollow noopener">WP Tavern</a> (Sarah Gooding, 4 de octubre de 2022) Joost de Valk lo resumía así: <em>«Los datos reales existen. Automattic es una de las empresas que compran plugins y tiene acceso a los datos exactos, y ahora más que antes, los demás no»</em>.</p>
<h3>2023: los devs contraatacan</h3>
<p>En septiembre de 2023 <a href="https://wptavern.com/wordpress-org-plugin-developers-renew-demands-for-better-plugin-metrics" target="_blank" rel="nofollow noopener">WP Tavern volvió sobre el tema</a> (Sarah Gooding, 12 de septiembre de 2023). Samuel Wood explicaba en un podcast que el gráfico estaba dando <em>«básicamente basura»</em> y que <em>«dar cifras de instalaciones activas que están mal es más dañino que no darlas»</em>, y que había un plan para sustituirlo, pero no para sustituirlo de inmediato.</p>
<p>En el mismo artículo Jason Coleman (Paid Memberships Pro) presentaba un borrador de propuesta con cuatro peticiones (cifras de instalaciones más precisas, lo mismo para las versiones, descargas separadas por tipo y la posibilidad de registrar eventos propios), aunque solo las pudiera ver cada autor de sus plugins.</p>
<p>No he encontrado ninguna respuesta oficial a esa propuesta ni ninguna entrada en make.wordpress.org/meta ni en make.wordpress.org/plugins sobre recuperar las estadísticas entre 2023 y hoy.</p>
<h3>2024: el ticket se cierra y se reabre en un día</h3>
<p>El 3 de octubre de 2024 Sybre Waaijer (Cybr, autor de The SEO Framework) cerró el ticket como «wontfix» (no se arreglará) en señal de protesta, porque mantenerlo abierto <em>«solo crea falsas esperanzas»</em>.</p>
<p>Al día siguiente Alex Shiels (tellyworth) lo reabrió y explicó que Matt le había pedido trabajar en indicadores de compatibilidad, y que <em>«el principal obstáculo es la carga de la base de datos»</em>, porque las bases de datos de estadísticas nunca se diseñaron para esas consultas.</p>
<p>Tres días después publicó una prueba de concepto con el porcentaje de sitios en la última versión y la distribución de versiones de WordPress y PHP. Esos indicadores no han llegado al directorio.</p>
<h3>2026: Matt Mullenweg contesta … o algo así</h3>
<p>En mayo de 2026 Jean Galea propuso que el crecimiento lo vieran solo los que tienen acceso de escritura al plugin (sus <em>committers</em>), de modo que nadie pudiera rascar los datos de los demás, y la idea tuvo bastantes apoyos en el hilo, como es lógico: problema ilógico, solución sencilla y rápida.</p>
<p>El 17 de julio Matt volvió a escribir en el ticket después de casi cuatro años, y lo hizo para decir que <em>«aquí hay varios intereses en juego»</em> y que hay que tener en cuenta <em>«los incentivos a largo plazo de los plugins comerciales frente a los comunitarios»</em>.</p>
<p>Una semana después añadía que él puede ver esos datos, igual que algunas personas de sistemas y de WordPress.org, y que este año la seguridad se va a llevar la mayor parte del tiempo.</p>
<p>La lectura que hizo de esto Jean Galea fue que el motivo había pasado de ser técnico (la ofuscación de 2022) a ser <em>«una decisión política»</em>.</p>
<p>Mientras tanto se han abierto tickets relacionados, como el <a href="https://meta.trac.wordpress.org/ticket/7648" target="_blank" rel="nofollow noopener">#7648</a> (mayo de 2024, que pide que las instalaciones pesen menos en el buscador), el <a href="https://meta.trac.wordpress.org/ticket/8298" target="_blank" rel="nofollow noopener">#8298</a> (junio de 2026, que propone ponerles tope) y el <a href="https://meta.trac.wordpress.org/ticket/8369" target="_blank" rel="nofollow noopener">#8369</a> (julio de 2026, una sección voluntaria de estadísticas en los perfiles), y ninguno se ha resuelto.</p>
<p>Yo también dejé mi comentario en el #6511 en septiembre de 2026. Como la cosa no se mueve, conté que he metido en un plugin gratuito todo lo que se puede sacar de las API oficiales, que es la alternativa que te enseño más abajo, porque no se tú, pero a mi me jode pagar por cosas que deberían ser gratis, sobre todo si ya están ahí, pero esa es otra historia. Sigo…</p>
<h3>La parte de razón que tiene el criterio actual WordPress.org</h3>
<p>Vamos a empezar por lo que tiene sentido, porque lo tiene. <strong>El dato de instalaciones no es exacto, y enseñar decimales falsos a la gente es peor que no enseñarlos.</strong></p>
<p>Tampoco es una paranoia lo del abuso, porque el buscador del directorio lleva años premiando las instalaciones por encima de casi todo y hay quien lo aprovecha, como explica Jean Galea en <a href="https://jeangalea.com/wordpress-plugin-search-gaming/" target="_blank" rel="nofollow noopener">cómo se amaña el buscador de plugins</a> (julio de 2026).</p>
<p>Y además, rehacer las bases de datos de estadísticas cuesta tiempo y dinero a una organización que tira de voluntarios y de empresas que ceden personal.</p>
<p>Dicho esto, el redondeo ya esconde la cifra exacta, así que un gráfico de tendencia basado en esos mismos tramos no destapa nada que no se sepa ya.</p>
<h3>Los datos públicos tienen que ser públicos (o eso pienso yo al menos)</h3>
<p>Aquí te tengo que reconocer una cosa, y es que la propia API, y mi propio plugin que se basa en ella, le quita un poco la razón a la propuesta de Galea.</p>
<p>Con el plugin <a href="https://wordpress.org/plugins/contributor-resume/" target="_blank" rel="noopener">Contributor Résumé and Insights</a> cualquiera puede escribir el usuario de otro autor y ver todo lo que da la API de sus plugins y temas, así que eso de que solo lo vean los <em>committers</em> protege más bien poco.</p>
<p>Mi opinión es que <strong>los datos públicos tienen que ser públicos, sin que nadie tenga que montarse herramientas por su cuenta ni depender de las de otros</strong>, y eso incluye a Contributor Résumé and Insights.</p>
<p>Todas las alternativas que vas a ver más abajo, la mía también, han nacido de una necesidad, y eso ya dice bastante de cómo está el asunto.</p>
<p>Tampoco me convence lo de los intereses en juego. <strong>Las herramientas nunca son el problema, lo es el uso que se haga de ellas.</strong> Es casi como decir que, como habrá gente que use WordPress para difundir bulos, no deberíamos dejar que se use abiertamente (y no creo que nadie en la comunidad firmase algo así).</p>
<p>Y luego está lo que reconoce el propio Matt, que él puede ver esos datos. ¿Y los demás, qué? <strong>Que unos vean los datos y los autores de los plugins no, ni es justo ni es juego limpio.</strong></p>
<h2>Las alternativas a las (no) estadísticas de WordPress.org para plugins y temas</h2>
<p>Casi todas las herramientas que hay hacen lo mismo por debajo, <strong>leen cada día (o cada semana) la API pública de WordPress.org y guardan una foto</strong>, y con esas fotos te pintan el histórico que el directorio no tiene. Las diferencias están en qué guardan, desde cuándo, dónde se quedan los datos y si se atreven a estimar la cifra dentro del tramo.</p>
<p>StatWP, WP-Rankings, WP Analyze, WP Stats, Repoevo o PluginTracker (el .dev) te dan un número más fino que «10.000+», calculado a partir de los cambios de tramo y de las descargas, y hay que reconocerles que lo avisan (el creador de WP-Rankings lo decía al presentarlo en el ticket, <em>«nada de esto es exacto, son estimaciones»</em>). Para ver tendencias van de maravilla, como cifra exacta no están pensadas para ello.</p>
<p>La única forma de tener el número real es la otra familia, la de los SDK de telemetría (como Freemius o Appsero), que meten código en tu plugin y cuentan los sitios que dan su consentimiento. Esos no entran en las tablas, luego te cuento por qué.</p>
<h3>Comparativa de servicios de estadísticas de plugins y temas</h3>
<p>He juntado 21 herramientas (el propio directorio incluido) en una hoja de cálculo con 46 funcionalidades y todos sus planes, y aquí te dejo cuatro vistazos parciales de esa hoja para que no tengas que tragarte una tabla de más de 40 columnas.</p>
<p>Los datos se comprobaron entre el 27 y el 29 de septiembre de 2026 en la web de cada servicio, en su ficha de WordPress.org los que la tienen y, cuando no con una cuenta gratuita o de prueba en los servicios externos.</p>
<p>Cada fila muestra el plan gratis de la herramienta (o el más barato, si no tiene gratis), con lo que añaden los planes de pago entre paréntesis.</p>
<h3>Herramientas, precios y detalles</h3>
<table style="font-size: 16px;">
<thead>
<tr>
<th>Herramienta</th>
<th>Tipo</th>
<th>Temas</th>
<th>Plan gratis</th>
<th>Precio desde</th>
<th>¿Pide cuenta?</th>
<th>Dónde quedan los datos</th>
</tr>
</thead>
<tbody>
<tr>
<td>WordPress.org</td>
<td>Directorio oficial</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>Solo para gestionar tu plugin o tema</td>
<td>En WordPress.org</td>
</tr>
<tr>
<td><a href="https://wordpress.org/plugins/contributor-resume/" target="_blank" rel="nofollow noopener">Contributor Résumé and Insights</a></td>
<td>Plugin</td>
<td>Sí</td>
<td>Sí, todo</td>
<td>Gratis</td>
<td>No</td>
<td>En tu base de datos</td>
</tr>
<tr>
<td><a href="https://statwp.com" target="_blank" rel="nofollow noopener">StatWP</a></td>
<td>Servicio web</td>
<td>Sí</td>
<td>Sí</td>
<td>12 USD/mes</td>
<td>Para seguir tus plugins</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wp-rankings.com" target="_blank" rel="nofollow noopener">WP-Rankings</a></td>
<td>Servicio web</td>
<td>No</td>
<td>Sí</td>
<td>Premium sin precio</td>
<td>Para reclamar tus plugins y ver tus keywords</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wpanalyze.com" target="_blank" rel="nofollow noopener">WP Analyze</a></td>
<td>Servicio web</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>Para comparar y seguir (cuenta gratis)</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wpmonitor.dev/" target="_blank" rel="nofollow noopener">WPMonitor</a></td>
<td>Servicio web</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En sus servidores (tus favoritos en tu navegador)</td>
</tr>
<tr>
<td><a href="https://wp.md/wordpress-plugin-stats/" target="_blank" rel="nofollow noopener">WP.MD</a></td>
<td>Servicio web</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://pluginscout.io/" target="_blank" rel="nofollow noopener">PluginScout</a></td>
<td>Servicio web</td>
<td>No</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://thepluginpulse.com/" target="_blank" rel="nofollow noopener">PluginPulse</a></td>
<td>Servicio web</td>
<td>No</td>
<td>Sí</td>
<td>9 USD/mes (anunciado)</td>
<td>Para seguir plugins</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wpmetrics.dev/" target="_blank" rel="nofollow noopener">wpMetrics</a></td>
<td>Servicio web</td>
<td>Sí</td>
<td>Sí (1 plugin o tema)</td>
<td>3,99 USD/mes</td>
<td>Sí</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://plugintracker.io/" target="_blank" rel="nofollow noopener">PluginTracker (.io)</a></td>
<td>Servicio web</td>
<td>No</td>
<td>Sí</td>
<td>4,99 USD/mes</td>
<td>Sí</td>
<td>En sus servidores (Supabase y Turso)</td>
</tr>
<tr>
<td><a href="https://plugintracker.dev/" target="_blank" rel="nofollow noopener">PluginTracker (.dev)</a></td>
<td>Servicio web</td>
<td>No</td>
<td>No</td>
<td>14,99 USD/mes</td>
<td>Sí</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wpstats.dev/" target="_blank" rel="nofollow noopener">WP Stats</a></td>
<td>Servicio web</td>
<td>Sí</td>
<td>No (prueba de 14 días y luego una cuenta gratis limitada)</td>
<td>4,99 USD/mes</td>
<td>Sí</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wordpress.org/plugins/repoevo/" target="_blank" rel="nofollow noopener">Repoevo</a></td>
<td>Plugin + servicio</td>
<td>No</td>
<td>Sí</td>
<td>0,39 €/día de uso</td>
<td>Sí</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://whoknew.io/whoknew-directory-seo/" target="_blank" rel="nofollow noopener">WhoKnew Directory SEO</a></td>
<td>Plugin + servicio</td>
<td>No</td>
<td>Sí (10 créditos al mes)</td>
<td>8 USD/mes</td>
<td>Solo en los planes de pago</td>
<td>En tu base de datos</td>
</tr>
<tr>
<td><a href="https://wpbean.com/pluginradar-wordpress-plugin-analytics-rank-tracker/" target="_blank" rel="nofollow noopener">PluginRadar</a></td>
<td>App autoalojada</td>
<td>No</td>
<td>No</td>
<td>99 USD, pago único</td>
<td>Sí</td>
<td>En tu servidor</td>
</tr>
<tr>
<td><a href="https://chromewebstore.google.com/detail/wp-ranking-free-wordpress/dnciijemlbpiojjabncdjiibhebplpep" target="_blank" rel="nofollow noopener">WP Ranking</a></td>
<td>Extensión de Chrome</td>
<td>No</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En tu navegador</td>
</tr>
<tr>
<td><a href="https://wphive.com" target="_blank" rel="nofollow noopener">WP Hive</a></td>
<td>Servicio web</td>
<td>Parcial (reseñas editoriales)</td>
<td>Sí</td>
<td>Gratis</td>
<td>Solo para tu área personal</td>
<td>En sus servidores</td>
</tr>
<tr>
<td><a href="https://wordpress.org/plugins/wp-plugin-info-card/" target="_blank" rel="nofollow noopener">WP Plugin Info Card</a></td>
<td>Plugin (escaparate)</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En tu web</td>
</tr>
<tr>
<td><a href="https://wordpress.org/plugins/plugin-stats-view/" target="_blank" rel="nofollow noopener">Plugin Stats View</a> + Theme Stats View</td>
<td>Plugin (escaparate)</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En tu web</td>
</tr>
<tr>
<td><a href="https://wordpress.org/plugins/wp-themes-plugins-stats/" target="_blank" rel="nofollow noopener">WP Themes &amp; Plugins Stats</a></td>
<td>Plugin (escaparate)</td>
<td>Sí</td>
<td>Sí</td>
<td>Gratis</td>
<td>No</td>
<td>En tu web</td>
</tr>
</tbody>
</table>
<h3>Instalaciones y descargas</h3>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>Herramienta</th>
<th>Histórico de instalaciones</th>
<th>Desde cuándo</th>
<th>Cifra más fina que el tramo</th>
<th>Descargas diarias</th>
</tr>
</thead>
<tbody>
<tr>
<td>WordPress.org</td>
<td>No</td>
<td>–</td>
<td>No</td>
<td>Sí, 729 días por API</td>
</tr>
<tr>
<td>Contributor Résumé and Insights</td>
<td>Sí, a diario</td>
<td>Desde que lo activas (descargas, dos años atrás)</td>
<td>No (en estudio)</td>
<td>Sí</td>
</tr>
<tr>
<td>StatWP</td>
<td>Sí</td>
<td>Julio de 2026</td>
<td>Sí, estimada</td>
<td>Sí</td>
</tr>
<tr>
<td>WP-Rankings</td>
<td>Sí</td>
<td>Más de 4 años</td>
<td>Sí, estimada</td>
<td>Parcial (variación reciente)</td>
</tr>
<tr>
<td>WP Analyze</td>
<td>Sí</td>
<td>Julio de 2026 (temas, agosto; descargas, 90 días)</td>
<td>Sí, estimada</td>
<td>Parcial (por periodos)</td>
</tr>
<tr>
<td>WPMonitor</td>
<td>Parcial (crecimiento a 30 días)</td>
<td>260 días o más (descargas)</td>
<td>No</td>
<td>Sí</td>
</tr>
<tr>
<td>WP.MD</td>
<td>Sí, a diario</td>
<td>Plugins, julio de 2026; temas, septiembre de 2024; descargas, agosto de 2024</td>
<td>No</td>
<td>Sí</td>
</tr>
<tr>
<td>PluginScout</td>
<td>Sí, a diario</td>
<td>Septiembre de 2026</td>
<td>No</td>
<td>Sí</td>
</tr>
<tr>
<td>PluginPulse</td>
<td>Sí, semanal</td>
<td>Julio de 2026</td>
<td>No</td>
<td>No (total semanal)</td>
</tr>
<tr>
<td>wpMetrics</td>
<td>No (sí en los de pago)</td>
<td>2 años</td>
<td>Parcial (dependía del gráfico retirado en 2022)</td>
<td>Sí</td>
</tr>
<tr>
<td>PluginTracker (.io)</td>
<td>No (tendencia en Premium)</td>
<td>14 días (180 y 365 en los de pago)</td>
<td>No</td>
<td>No (parcial en los de pago)</td>
</tr>
<tr>
<td>PluginTracker (.dev)</td>
<td>Sí</td>
<td>180 días</td>
<td>Sí, estimada</td>
<td>Sí</td>
</tr>
<tr>
<td>WP Stats</td>
<td>Sí</td>
<td>30 días (1 año o completo en los superiores)</td>
<td>Sí, estimada (también sin plan de pago)</td>
<td>Sí</td>
</tr>
<tr>
<td>Repoevo</td>
<td>Sí</td>
<td>Abril de 2026 (descargas, abril de 2025)</td>
<td>Sí, estimada</td>
<td>Sí</td>
</tr>
<tr>
<td>PluginRadar</td>
<td>Sí</td>
<td>Desde que empiezas (descargas, dos años atrás)</td>
<td>No</td>
<td>Sí</td>
</tr>
<tr>
<td>WP Hive</td>
<td>No</td>
<td>–</td>
<td>No</td>
<td>Sí, 180 días leídos en vivo de WordPress.org</td>
</tr>
</tbody>
</table>
</div>
<p>WhoKnew Directory SEO, la extensión WP Ranking y los plugins para mostrar cifras no guardan histórico de instalaciones ni de descargas, no es lo suyo.</p>
<h3>Posición en las búsquedas y competidores</h3>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>Herramienta</th>
<th>Posición por keyword</th>
<th>Keywords</th>
<th>Top de cada búsqueda</th>
<th>Posición en etiquetas</th>
<th>Comparar competidores</th>
<th>Aviso si te adelantan</th>
</tr>
</thead>
<tbody>
<tr>
<td>Contributor Résumé and Insights</td>
<td>Sí, diaria</td>
<td>10 por plugin o tema</td>
<td>Sí, top 10</td>
<td>Sí (plugins)</td>
<td>Previsto</td>
<td>Previsto</td>
</tr>
<tr>
<td>StatWP</td>
<td>Sí</td>
<td>1 (5, 10 y 25 en los de pago)</td>
<td>Sí, top 20</td>
<td>Parcial (marcas en su extensión de Chrome)</td>
<td>1 (hasta 5 en los de pago)</td>
<td>No</td>
</tr>
<tr>
<td>WP-Rankings</td>
<td>Sí, tras reclamar el plugin</td>
<td>5</td>
<td>No</td>
<td>Parcial (páginas por etiqueta)</td>
<td>3</td>
<td>No (anunciado en Premium)</td>
</tr>
<tr>
<td>WP Analyze</td>
<td>No</td>
<td>–</td>
<td>No</td>
<td>Parcial (rankings por etiqueta)</td>
<td>Hasta 4</td>
<td>No</td>
</tr>
<tr>
<td>WPMonitor</td>
<td>Sí</td>
<td>5 por plugin o tema</td>
<td>Parcial (enlace a la búsqueda)</td>
<td>Sí</td>
<td>Parcial (relacionados y 2 de tu lista)</td>
<td>No</td>
</tr>
<tr>
<td>WP.MD</td>
<td>No (sí el puesto en «Popular»)</td>
<td>–</td>
<td>No</td>
<td>No</td>
<td>Hasta 4</td>
<td>No</td>
</tr>
<tr>
<td>PluginScout</td>
<td>Parcial (80 términos fijos)</td>
<td>No se eligen</td>
<td>Parcial (top 10 de cada clasificación)</td>
<td>Sí, en sus clasificaciones</td>
<td>Comparativas ya hechas</td>
<td>No</td>
</tr>
<tr>
<td>PluginPulse</td>
<td>No</td>
<td>–</td>
<td>No</td>
<td>No</td>
<td>Hasta 2 (5 en Starter)</td>
<td>No</td>
</tr>
<tr>
<td>wpMetrics</td>
<td>Sí</td>
<td>Sin límite</td>
<td>No</td>
<td>No</td>
<td>Hasta 5</td>
<td>No</td>
</tr>
<tr>
<td>PluginTracker (.io)</td>
<td>Sí</td>
<td>3 por plugin (20 en Premium)</td>
<td>Parcial (solo el que tienes encima)</td>
<td>En los de pago</td>
<td>En los de pago (10 por plugin)</td>
<td>En los de pago</td>
</tr>
<tr>
<td>PluginTracker (.dev)</td>
<td>Sí</td>
<td>10 por plugin</td>
<td>No</td>
<td>No</td>
<td>5 por plugin (los añades tú)</td>
<td>Parcial (alertas por umbral)</td>
</tr>
<tr>
<td>WP Stats</td>
<td>Sí</td>
<td>15 por plugin (hasta ilimitadas)</td>
<td>No</td>
<td>No</td>
<td>Salen solos (7 en el resumen, hasta 35 en la lista); comparar, desde Growth</td>
<td>Desde Growth</td>
</tr>
<tr>
<td>Repoevo</td>
<td>Parcial (top 100, sin keywords propias)</td>
<td>Sin límite en Pro</td>
<td>No</td>
<td>Parcial (top 100)</td>
<td>1 (sin límite en Pro)</td>
<td>No</td>
</tr>
<tr>
<td>WhoKnew Directory SEO</td>
<td>Sí, cuando lanzas el escaneo</td>
<td>Sin límite (10 escaneos al mes gratis)</td>
<td>Sí</td>
<td>No</td>
<td>Sí</td>
<td>No</td>
</tr>
<tr>
<td>PluginRadar</td>
<td>Sí</td>
<td>Sin límite</td>
<td>No</td>
<td>No</td>
<td>Sin límite publicado</td>
<td>Sí</td>
</tr>
<tr>
<td>WP Ranking</td>
<td>Sí, consulta puntual (hasta el puesto 120)</td>
<td>Sin límite</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>WP Hive</td>
<td>No</td>
<td>–</td>
<td>No</td>
<td>No</td>
<td>Sí, de dos en dos</td>
<td>No</td>
</tr>
</tbody>
</table>
</div>
<h3>Avisos, informes y muestreo de datos</h3>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>Herramienta</th>
<th>Avisos en el escritorio</th>
<th>Alertas por correo</th>
<th>Informe periódico</th>
<th>Exportar</th>
<th>Mostrar cifras en tu web</th>
</tr>
</thead>
<tbody>
<tr>
<td>WordPress.org</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Parcial (API en JSON)</td>
<td>No</td>
</tr>
<tr>
<td>Contributor Résumé and Insights</td>
<td>Sí (con gráficas y detalle de cambios)</td>
<td>Sí</td>
<td>Sí (diario, semanal, mensual)</td>
<td>CSV</td>
<td>Parcial (<em>bloque y shortcode previstos</em>)</td>
</tr>
<tr>
<td>StatWP</td>
<td>No (sí en su extensión de Chrome)</td>
<td>No</td>
<td>No</td>
<td>No (Markdown o PDF en los superiores)</td>
<td>No</td>
</tr>
<tr>
<td>WP-Rankings</td>
<td>No</td>
<td>No (anunciado en Premium)</td>
<td>No (anunciado en Premium)</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>WP Analyze</td>
<td>No (todo va por correo)</td>
<td>Sí (vulnerabilidades, cambios bruscos y soporte)</td>
<td>Semanal, y mensual de seguridad</td>
<td>CSV (plugins y temas reclamados)</td>
<td>Sí</td>
</tr>
<tr>
<td>WPMonitor</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>WP.MD</td>
<td>Parcial (avisos en las fichas)</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>PluginScout</td>
<td>No</td>
<td>No</td>
<td>Parcial (boletín semanal)</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>PluginPulse</td>
<td>Parcial (cambios recientes)</td>
<td>No (anunciado en Starter)</td>
<td>Sí, semanal</td>
<td>No (CSV en Starter)</td>
<td>No</td>
</tr>
<tr>
<td>wpMetrics</td>
<td>Parcial (reseñas nuevas)</td>
<td>No</td>
<td>Sí</td>
<td>No (CSV y Excel en los de pago)</td>
<td>No</td>
</tr>
<tr>
<td>PluginTracker (.io)</td>
<td>Sí</td>
<td>En los de pago (y webhooks)</td>
<td>En los de pago</td>
<td>En los de pago</td>
<td>No</td>
</tr>
<tr>
<td>PluginTracker (.dev)</td>
<td>Sí</td>
<td>Sí (también Slack y Discord)</td>
<td>Semanal y mensual</td>
<td>JSON completo</td>
<td>Sí</td>
</tr>
<tr>
<td>WP Stats</td>
<td>Parcial</td>
<td>Sí</td>
<td>Semanal</td>
<td>Parcial (CSV de keywords anunciado, no visible en la cuenta gratuita)</td>
<td>Desde Growth</td>
</tr>
<tr>
<td>Repoevo</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>PDF en Pro</td>
<td>No</td>
</tr>
<tr>
<td>WhoKnew Directory SEO</td>
<td>Parcial (flechas)</td>
<td>No</td>
<td>No</td>
<td>JSON (y PDF en los de pago)</td>
<td>No</td>
</tr>
<tr>
<td>PluginRadar</td>
<td>Sí</td>
<td>Sí</td>
<td>Sí</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>WP Ranking</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>CSV de la consulta</td>
<td>No</td>
</tr>
<tr>
<td>WP Plugin Info Card, Plugin Stats View y WP Themes &amp; Plugins Stats</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Sí</td>
</tr>
</tbody>
</table>
</div>
<p>Cuando ves todas las tablas juntas se ve claro que <strong>nadie tiene todo, y que lo que más cambia de una a otra no son las gráficas sino dónde acaban tus datos y lo que pasa si el servicio cierra.</strong></p>
<h3>Lo que cuestan los planes de pago</h3>
<p>Precios del 27 y el 28 de septiembre de 2026, en la moneda de cada servicio y sin impuestos. Cambian a menudo, así que compruébalos antes de pagar nada.</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>Herramienta</th>
<th>Plan</th>
<th>Al mes</th>
<th>Al año</th>
<th>Qué incluye, a grandes rasgos</th>
</tr>
</thead>
<tbody>
<tr>
<td>StatWP</td>
<td>Hobbyist</td>
<td>12 USD</td>
<td>120 USD</td>
<td>2 plugins o temas, 5 keywords cada uno, 2 competidores</td>
</tr>
<tr>
<td>StatWP</td>
<td>Enthusiast</td>
<td>19 USD</td>
<td>190 USD</td>
<td>3 plugins o temas, 10 keywords cada uno, 3 competidores</td>
</tr>
<tr>
<td>StatWP</td>
<td>Power User</td>
<td>39 USD</td>
<td>390 USD</td>
<td>10 plugins o temas, 25 keywords cada uno, 5 competidores</td>
</tr>
<tr>
<td>wpMetrics</td>
<td>Developer</td>
<td>3,99 a 12,99 USD</td>
<td>43,89 a 142,89 USD</td>
<td>3, 5, 7 o 10 plugins o temas, histórico de instalaciones, exportación, 7 días de prueba</td>
</tr>
<tr>
<td>wpMetrics</td>
<td>Custom</td>
<td>13,93 a 40,40 USD</td>
<td>153,23 a 444,37 USD</td>
<td>De 11 a 30 plugins o temas</td>
</tr>
<tr>
<td>PluginPulse</td>
<td>Starter</td>
<td>9 USD</td>
<td>–</td>
<td>20 plugins, alertas, comparar hasta 5, CSV (anunciado, todavía no se puede contratar)</td>
</tr>
<tr>
<td>PluginTracker (.io)</td>
<td>Premium</td>
<td>4,99 USD</td>
<td>48 USD</td>
<td>10 plugins, 20 keywords y 10 competidores por plugin, 180 días de histórico</td>
</tr>
<tr>
<td>PluginTracker (.io)</td>
<td>Enterprise</td>
<td>A medida</td>
<td>A medida</td>
<td>Hasta 50 plugins, 365 días de histórico</td>
</tr>
<tr>
<td>PluginTracker (.dev)</td>
<td>1 plugin</td>
<td>14,99 USD</td>
<td>149,99 USD</td>
<td>10 keywords, 5 competidores</td>
</tr>
<tr>
<td>PluginTracker (.dev)</td>
<td>5 plugins</td>
<td>29,99 USD</td>
<td>299,99 USD</td>
<td>10 keywords y 5 competidores por plugin</td>
</tr>
<tr>
<td>PluginTracker (.dev)</td>
<td>10 plugins</td>
<td>74,99 USD</td>
<td>749,99 USD</td>
<td>Lo mismo para 10 plugins</td>
</tr>
<tr>
<td>WP Stats</td>
<td>Starter</td>
<td>4,99 USD</td>
<td>49,90 USD</td>
<td>3 plugins, 15 keywords, 30 días de histórico (o 149 USD de por vida)</td>
</tr>
<tr>
<td>WP Stats</td>
<td>Growth</td>
<td>14,99 USD</td>
<td>149,90 USD</td>
<td>10 plugins, 50 keywords, 5 competidores, 1 año de histórico (o 449 USD de por vida)</td>
</tr>
<tr>
<td>WP Stats</td>
<td>Enterprise</td>
<td>49,99 USD</td>
<td>499,90 USD</td>
<td>Todo ilimitado, API, 3 usuarios (o 1.499 USD de por vida)</td>
</tr>
<tr>
<td>Repoevo</td>
<td>Pro</td>
<td>0,39 € por día de uso</td>
<td>–</td>
<td>Plugins y keywords ilimitados, PDF; solo pagas los días que usas el panel de detalle</td>
</tr>
<tr>
<td>WhoKnew Directory SEO</td>
<td>Pro</td>
<td>8 USD</td>
<td>80 USD</td>
<td>100 créditos al mes, análisis de keywords de la competencia, informe PDF</td>
</tr>
<tr>
<td>WhoKnew Directory SEO</td>
<td>Growth</td>
<td>16 USD</td>
<td>160 USD</td>
<td>250 créditos al mes, mismas funciones</td>
</tr>
<tr>
<td>WhoKnew Directory SEO</td>
<td>Studio</td>
<td>40 USD</td>
<td>400 USD</td>
<td>700 créditos al mes, mismas funciones</td>
</tr>
<tr>
<td>WhoKnew Directory SEO</td>
<td>Agency</td>
<td>150 USD</td>
<td>1.500 USD</td>
<td>3.000 créditos al mes, mismas funciones</td>
</tr>
<tr>
<td>PluginRadar</td>
<td>Pro</td>
<td>–</td>
<td>99 USD, pago único</td>
<td>Plugins y keywords ilimitados, en tu propio servidor</td>
</tr>
</tbody>
</table>
</div>
<h3>Detalles que conviene saber antes de elegir</h3>
<ul>
<li><strong>Hay dos PluginTracker:</strong> plugintracker.io y plugintracker.dev son servicios distintos, con precios y funciones distintos. El .dev, además, ofrece un SDK de telemetría opcional aparte del rastreador, y aunque sigue teniendo publicada una página de planes de por vida, su FAQ dice que ahora no los vende. Lo he probado con su prueba gratuita y, sin el SDK, el rastreador se queda bastante corto (el gráfico de descargas no marca las versiones, las keywords enseñan su evolución pero no quién está por encima, y no aparece la alerta «version behind» que anuncia su web). Lo que te propone para casi todo es añadir la telemetría, de pago.</li>
<li><strong>WP-Rankings:</strong> hoy es gratis y solo cubre plugins, no temas. Puedes reclamar todos tus plugins (sin límite, verificando que son tuyos), y para ver tus keywords tienes que hacerlo. Dicen tener más de cuatro años de fotos diarias, y el plan Premium está anunciado, pendiente de una votación de usuarios, sin fecha ni precio. Según The Repository tuvo 72.000 visitantes únicos en las primeras 24 horas tras su relanzamiento en julio de 2026.</li>
<li><strong>WP Analyze:</strong> gratis, y la búsqueda y las fichas no piden cuenta. Las alertas por correo que tiene son de vulnerabilidades, no de estadísticas.</li>
<li><strong>WPMonitor:</strong> gratis y sin registro. Ya te lo presenté en su día en <a href="https://ayudawp.com/wpmonitor-dev-estadisticas-de-plugins-y-temas-wordpress-casi-como-deberian-ser/" target="_blank" rel="ugc noopener">wpmonitor.dev, estadísticas de plugins y temas WordPress (casi) como deberían ser</a>.</li>
<li><strong>WP.MD:</strong> es de Pavel Ciorici (el fundador de WPZOOM), gratis y sin registro. Sigue el puesto de cada plugin y tema en la lista «Popular» del directorio, y en temas tiene histórico desde septiembre de 2024, que para quien publica temas es bastante más de lo que hay en otros sitios.</li>
<li><strong>PluginScout:</strong> gratis y sin registro, de FS Code (los de Booknetic y FS Poster). Organiza el directorio en 80 clasificaciones por categoría con alternativas y comparativas ya hechas. Arrancó el 4 de septiembre de 2026, así que su histórico empieza ese día.</li>
<li><strong>PluginPulse:</strong> lee el directorio cada semana y enseña el histórico de cualquier plugin sin cuenta. Con cuenta gratis sigues un plugin (la portada habla de tres) y recibes un resumen semanal por correo, y el plan de pago está anunciado, pero todavía no se puede contratar.</li>
<li><strong>wpMetrics:</strong> tiene plan gratis para un plugin o tema y planes de pago desde 3,99 USD al mes, aunque los precios no están en su web, salen de su propia aplicación. La última novedad que ha publicado es de octubre de 2022, pero sigue funcionando con datos al día, y el histórico de instalaciones es de pago.</li>
<li><strong>WP Stats:</strong> sigue plugins y temas (lo confirma su FAQ), tiene prueba de 14 días sin tarjeta y, además de las cuotas, un pago único de por vida desde 149 USD. Te sugiere competidores solo, sin que los añadas, y te da una cifra concreta de instalaciones (331 donde WordPress.org dice 300+) incluso sin plan de pago. Eso sí, su gráfica de «next milestone» queda muy bien pero no aporta más, solo marca la siguiente cifra redonda.</li>
<li><strong>Repoevo:</strong> es un plugin que instalas en tu WordPress, pero los datos se guardan en el servidor del proveedor (en Alemania) y necesitas registrarte. Al darte de alta te regala unos días de uso del plan Pro, sin tarjeta.</li>
<li><strong>WhoKnew Directory SEO:</strong> el plugin es solo la interfaz, el trabajo lo hace el servicio de whoknew.io. Mide tu posición por keyword cuando tú lanzas el escaneo (no a diario), cada escaneo gasta un crédito, y además revisa si la keyword aparece en los campos de tu ficha que cuentan para el buscador. Los datos se quedan en tu WordPress.</li>
<li><strong>PluginRadar:</strong> es una aplicación (Node.js y React) de WPBean que instalas en tu propio servidor. Los 99 USD son más impuestos.</li>
<li><strong>WP Ranking:</strong> extensión de Chrome gratuita para mirar en qué puesto sales para varias keywords en un momento dado, sin guardar histórico. Su última versión es de junio de 2024, pero la lógica que usa sigue funcionando con el buscador actual.</li>
<li><strong>WP Plugin Info Card:</strong> sirve para mostrar tarjetas de plugins y temas en tu web, no para analizar. Su empresa, DLX Plugins, anunció que cierra el 1 de octubre de 2026 y el plugin busca nuevo responsable.</li>
<li><strong>WP Themes &amp; Plugins Stats:</strong> shortcodes para mostrar en tu web las cifras de un plugin o tema concreto. Si vas a usar los totales por autor, pruébalo antes con tu versión de PHP.</li>
</ul>
<p>Fuera de la comparativa se han quedado las que no funcionan. AutomagicWP tenía el certificado caducado y todo daba 404, Easy Plugin Stats está cerrado en el directorio desde agosto de 2025 a petición de su autor, y pluginrank.com y wpstats.me ya no responden.</p>
<p>Lo de pluginrank.com, que fue uno de los servicios de referencia hace años, sirve de aviso. En el propio ticket uno de los creadores de WP-Rankings recordaba que proyectos parecidos cerraron porque casi nadie pagaba por ellos, y <strong>cuando un servicio cierra, tu histórico se va con él.</strong></p>
<blockquote><p>Las tablas anteriores son un resumen, si quieres el detalle completo de todas estas herramientas, con las 46 funciones, todos los planes, las notas de cada celda y las fuentes, te <strong>puedes descargar la hoja completa</strong> <a href="https://ayudawp.com/wp-content/uploads/2026/10/comparativa-analitica-plugins-wporg-2026-09-29.xlsx" target="_blank" rel="nofollow noopener">en Excel</a> o <a href="https://ayudawp.com/wp-content/uploads/2026/10/comparativa-analitica-plugins-wporg-2026-09-29.pdf" target="_blank" rel="nofollow noopener">en PDF</a>.</p></blockquote>
<h3>Los SDK de telemetría, datos reales a cambio de código</h3>
<p>Si te preguntas por servicios como Freemius y Appsero y por qué no están en la comparativa es debido a que juegan en otra liga, y por eso no están en las tablas. Son plataformas para vender y gestionar licencias de plugins y temas que, de paso, te dan analítica.</p>
<p>En lugar de leer la API de WordPress.org meten un SDK (un paquete de código) dentro de tu plugin o tema, que informa desde cada sitio que da su permiso. Así tienes instalaciones y desinstalaciones reales, versiones de PHP y de WordPress y, si vendes, licencias y ventas.</p>
<p>El precio no es solo dinero (Freemius Insights y Appsero Free Forever son gratis), es código de terceros dentro de tu plugin y, sobre todo, consentimiento, porque <a href="https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/" target="_blank" rel="nofollow noopener">la directriz 7 del directorio</a> es clara, <em>«los plugins no pueden rastrear a los usuarios sin su consentimiento»</em>.</p>
<p>En la práctica eso significa el típico aviso de «¿nos dejas recoger datos anónimos?», así que la cifra que ves es la de quienes dijeron que sí.</p>
<p>Si tu plugin es gratis y no quieres meterle nada, estás limitado a lo que da la API pública, y a partir de ahí todo es guardar fotos fijas o hacer estimaciones.</p>
<h2>Contributor Résumé and Insights</h2>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-160476" src="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-insights.jpg" alt="" width="1200" height="389" srcset="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-insights.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-insights-768x249.jpg 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p><strong><a href="https://es.wordpress.org/plugins/contributor-resume/" target="_blank" rel="noopener">Contributor Résumé and Insights</a> es un plugin que tengo publicado</strong>, gratis, sin planes de pago, sin cuenta y sin claves de API, y <strong>los datos se guardan en la base de datos de tu propio WordPress</strong>, no en un servidor ajeno, como todos los míos.</p>
<p>¿Que por qué lo hice? pues por dos motivos.</p>
<p>Primero por lo que conté en el ticket del Trac, que como aquello no avanza decidí meter en un plugin gratuito todo lo que se puede sacar de las API oficiales de WordPress.org.</p>
<p>Y luego que quería tener una opción gratis para mí y para cualquier otro desarrollador que publique en el directorio, sin cuotas ni servicios de por medio.</p>
<p>Nació inicialmente para montar una página con tu currículum de contribuidor de WordPress.org, y desde la versión 1.4.0 le incorporé una pestaña de estadísticas que, si publicas plugins o temas, se convierte en tu propio panel de analítica. Esto es lo que te da (de momento):</p>
<ul>
<li><strong>Descargas diarias:</strong> dos años hacia atrás desde el primer día, y el histórico sigue creciendo.</li>
<li><strong>Instalaciones activas y versiones en uso:</strong> una lectura al día desde que activas las estadísticas (lo de las versiones, solo en plugins, porque WordPress.org no lo da para temas).</li>
<li><strong>Posición en el buscador:</strong> hasta 10 búsquedas por plugin o tema, cada día, con el top 10 de cada búsqueda para que veas quién tienes por encima.</li>
<li><strong>Etiquetas:</strong> en qué puesto y en qué página sale cada plugin en sus etiquetas del directorio.</li>
<li><strong>Reputación y soporte:</strong> valoración con desglose por estrellas, las 10 últimas reseñas y los hilos de soporte abiertos y resueltos.</li>
<li><strong>Traducciones:</strong> paquetes de idioma y traducciones a medias.</li>
<li><strong>Avisos en el panel:</strong> hilos sin responder, nuevas versiones, cambios fuertes de descargas, reseñas nuevas y plugins sin probar con la última versión de WordPress.</li>
<li><strong>Salida de datos:</strong> exportación en CSV de cada vista, un widget de escritorio que cada usuario configura a su gusto y comandos de WP-CLI.</li>
<li><strong>Vistazo a otros autores:</strong> hasta tres al día, para que no te vicies.</li>
<li><strong>Alertas y resúmenes por correo electrónico</strong>: a diario, semanal o mensual, solo alertas o todo incluido, con detalle sobre subidas y bajadas.</li>
</ul>
<p>Los límites actuales son 50 plugins o temas y 10 búsquedas por cada uno, pero se pueden cambiar usando un filtro.</p>

<a href="https://ayudawp.com/estadisticas-plugins-wordpress-org/contributor-resume-widget-escritorio/" rel="nofollow"><img width="1200" height="1754" src="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-widget-escritorio-1200x1754.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-widget-escritorio-1200x1754.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-widget-escritorio-768x1123.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-widget-escritorio-1051x1536.jpg 1051w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-widget-escritorio.jpg 1304w" sizes="(max-width: 1200px) 100vw, 1200px" decoding="async" fetchpriority="high"></a>
<a href="https://ayudawp.com/estadisticas-plugins-wordpress-org/contributor-resume-estadisticas-globales/" rel="nofollow"><img width="1200" height="2127" src="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-globales-1200x2127.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-globales-1200x2127.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-globales-768x1361.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-globales-867x1536.jpg 867w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-globales-1155x2048.jpg 1155w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-globales.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/estadisticas-plugins-wordpress-org/contributor-resume-estadisticas-plugin/" rel="nofollow"><img width="1200" height="1706" src="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-plugin-1200x1706.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-plugin-1200x1706.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-plugin-768x1092.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-plugin-1080x1536.jpg 1080w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-plugin-1440x2048.jpg 1440w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-plugin.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/estadisticas-plugins-wordpress-org/contributor-resume-correos-electronicos/" rel="nofollow"><img width="1200" height="1341" src="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-correos-electronicos-1200x1341.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-correos-electronicos-1200x1341.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-correos-electronicos-768x858.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-correos-electronicos-1375x1536.jpg 1375w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-correos-electronicos-1833x2048.jpg 1833w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-correos-electronicos.jpg 1878w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/estadisticas-plugins-wordpress-org/contributor-resume-estadisticas-alertas-email/" rel="nofollow"><img width="1200" height="2942" src="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-alertas-email-1200x2942.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-alertas-email-1200x2942.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-alertas-email-768x1883.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-alertas-email-626x1536.jpg 626w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-alertas-email-835x2048.jpg 835w, https://ayudawp.com/wp-content/uploads/2026/10/contributor-resume-estadisticas-alertas-email.jpg 1598w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>

<p>Y ahora lo que no hace (aún):</p>
<ul>
<li>El histórico de instalaciones y de posiciones empieza el día que lo activas, porque WordPress.org no guarda el pasado y yo no me lo puedo inventar.</li>
<li>Si necesitas ver cómo te ha ido en los últimos años, WP-Rankings, con sus fotos desde 2022, te lo cuenta mejor, y en temas lo tienes en WP.MD.</li>
<li>Tampoco estima la cifra dentro del tramo (de momento), no compara con competidores (todavía), no manda alertas por correo (aún).</li>
<li>No rastrea vulnerabilidades y no tiene telemetría, solo lee datos públicos.</li>
</ul>
<p>En la lista de tareas tengo varias cosas previstas y otras en estudio, sin fechas y sujetas a cambios.</p>
<ul>
<li>Añadir un bloque y shortcode propios para enseñar tus estadísticas en público (solo si quieres, y con el nivel de detalle que decidas como administrador de la web).</li>
<li>La comparación con los competidores que elija cada usuario, las sugerencias de competidores a partir del top 10 de tus búsquedas y el aviso cuando alguien te adelanta.</li>
<li>En estudio me ando pensando cómo afinar la estimación de instalaciones, marcar los lanzamientos de versiones en las gráficas y un análisis de reseñas con la IA del propio sitio.</li>
</ul>
<h2>¿Qué herramienta es mejor para ver estadísticas de mis desarrollos?</h2>
<p>Depende de lo que quieras saber y de dónde quieras que vivan tus datos:</p>
<ul>
<li><strong>Solo quieres echar un vistazo de vez en cuando:</strong> WPMonitor, WP Analyze, WP-Rankings, WP.MD, PluginScout o PluginPulse, todas gratis y sin cuenta para consultar. No instalas nada.</li>
<li><strong>Quieres ver tu pasado, de antes de hoy:</strong> WP-Rankings para plugins, por esos años de fotos diarias, y WP.MD para temas. Ninguna herramienta que empieces a usar hoy te devolverá lo que no guardó nadie.</li>
<li><strong>Quieres los datos sin salir casa, sin cuentas ni servicios de terceros:</strong> Contributor Résumé and Insights si no quieres pagar, o PluginRadar si prefieres una aplicación aparte en tu servidor con competidores y alertas ya desde ahora mismo.</li>
<li><strong>Quieres keywords, competidores y alertas por correo desde ya, y no te importa pagar:</strong> PluginTracker (.io o .dev), WP Stats o StatWP, según cuántos plugins tengas y cuánto histórico necesites.</li>
<li><strong>Solo quieres comprobar tu posición de vez en cuando, o trabajar el readme:</strong> la extensión WP Ranking para una consulta rápida, o WhoKnew Directory SEO, que con sus créditos gratis te da para unos cuantos escaneos al mes y te revisa la ficha.</li>
<li><strong>Quieres la cifra real y más datos de uso:</strong> un SDK como Freemius o Appsero, con el consentimiento de por medio y asumiendo lo que eso supone.</li>
<li><strong>Solo quieres enseñar tus cifras en tu web:</strong> Plugin Stats View y Theme Stats View, WP Themes &amp; Plugins Stats o WP Plugin Info Card (teniendo en cuenta lo del cierre de su empresa).</li>
</ul>
<p>Y sobre todo ningunos son excluyentes. Nada te impide usar una herramienta gratis para el día a día y otra para mirar el histórico de hace años.</p>
<h2>¿Tengo que hacer algo ya mismo?</h2>
<p>Pues sí, al menos una cosa, porque todo lo que no guardes hoy lo pierdes, así que:</p>
<ol>
<li><strong>Empieza a guardar datos hoy:</strong> Da igual la herramienta, pero las instalaciones y las posiciones que no se registren esta semana no las vas a recuperar nunca, y las descargas solo llegan dos años atrás.</li>
<li><strong>Piensa dónde quieres que estén tus datos:</strong> En tu base de datos, en tu servidor o en un servicio ajeno, cada opción tiene sus pros y sus contras.</li>
<li><strong>Exporta de vez en cuando:</strong> Un CSV guardado en tu disco sobrevive al cierre de cualquier servicio, incluido el mío.</li>
<li><strong>Trata las estimaciones como lo que son:</strong> Sirven para ver tendencias, no para anunciar que tienes 19.400 usuarios.</li>
<li><strong>Si vas a comentar en el ticket del Trac, aporta algo:</strong> Ya hay decenas de «+1» pero una propuesta concreta pesa más.</li>
</ol>
<p>Hasta aquí mucha información y un poco de mi opinión, ahora te toca a ti decidir qué te conviene. Si usas alguna herramienta que no esté en la lista, o no estás de acuerdo con cómo la he descrito, me tienes ahí abajo, en la sección de comentarios.</p>
<p>Y si estás empezando con tu primer plugin en el directorio, igual te interesa también <a href="https://ayudawp.com/conseguir-mas-instalaciones-plugin/" target="_blank" rel="ugc noopener">cómo conseguir más usuarios para tu plugin en WordPress.org</a>, con algunos consejos, y también errores que he cometido para que no los cometas tú.</p>
<p>En fin, nada más, salvo lo que quieras aportar abajo en los comentarios, ojalá este artículo se quede viejo pronto porque WordPress.org nos devuelva las estadísticas. Mientras tanto ya sabes, a guardar fotos fijas o herramientas que otros han ido aportando (yo incluido) para cubrir ese hueco.</p>
<h2>Fuentes</h2>
<p>Todas consultadas en septiembre de 2026 salvo que se indique otra cosa.</p>
<p><strong>WordPress.org y Trac</strong></p>
<ul>
<li><a href="https://meta.trac.wordpress.org/ticket/6511" target="_blank" rel="nofollow noopener">Ticket #6511, «Provide helpful plugin stats and insights»</a>, abierto el 30 de septiembre de 2022 por markzahra; 184 comentarios a 27 de septiembre de 2026. Comentarios citados:
<ul>
<li>3 y 5 de octubre de 2022 (matt);</li>
<li>31 de marzo de 2023 (dd32, comentario 129);</li>
<li>3 y 4 de octubre de 2024 (Cybr, comentario 146; tellyworth, comentarios 147 y 148; prueba de concepto el 7 de octubre);</li>
<li>12 de mayo de 2026 (jeangalea);</li>
<li>17 y 23 de julio de 2026 (matt, comentarios 176 y 181);</li>
<li>27 de septiembre de 2026 (fernandot, comentario 184).</li>
</ul>
</li>
<li><a href="https://meta.trac.wordpress.org/changeset/12097" target="_blank" rel="nofollow noopener">Changeset 12097</a>, 29 de septiembre de 2022, coffee2code (Scott Reilly).</li>
<li>Tickets relacionados:
<ul>
<li><a href="https://meta.trac.wordpress.org/ticket/7648" target="_blank" rel="nofollow noopener">#7648</a>, 21 de mayo de 2024;</li>
<li><a href="https://meta.trac.wordpress.org/ticket/8298" target="_blank" rel="nofollow noopener">#8298</a>, 11 de junio de 2026;</li>
<li><a href="https://meta.trac.wordpress.org/ticket/8369" target="_blank" rel="nofollow noopener">#8369</a>, 18 de julio de 2026.</li>
</ul>
</li>
<li>Código del directorio: <a href="https://meta.svn.wordpress.org/sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php" target="_blank" rel="nofollow noopener"><code>class-template.php</code> del plugin plugin-directory</a>, funciones <code>sanitize_active_installs()</code> y <code>format_active_installs_for_display()</code>.</li>
<li>Código de WordPress: <a href="https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-includes/update.php" target="_blank" rel="nofollow noopener"><code>wp-includes/update.php</code></a> (comprobación de actualizaciones cada doce horas, envío de plugins instalados y activos).</li>
<li>API pública de estadísticas (comprobada el 25 y el 27 de septiembre de 2026):
<ul>
<li><code>api.wordpress.org/stats/plugin/1.0/downloads.php</code>;</li>
<li><code>api.wordpress.org/stats/themes/1.0/downloads.php</code>;</li>
<li><code>api.wordpress.org/stats/plugin/1.0/{slug}</code>;</li>
<li><code>api.wordpress.org/stats/plugin/1.0/active-installs.php</code> (404).</li>
</ul>
</li>
<li><a href="https://make.wordpress.org/plugins/2021/08/27/inaccurate-stats-have-been-corrected/" target="_blank" rel="nofollow noopener">Inaccurate stats have been corrected</a>, Make Plugins, 27 de agosto de 2021.</li>
<li><a href="https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/" target="_blank" rel="nofollow noopener">Detailed Plugin Guidelines, directriz 7</a>.</li>
</ul>
<p><strong>Prensa y opiniones</strong></p>
<ul>
<li><a href="https://wptavern.com/wordpress-org-removes-active-install-growth-data-for-plugins" target="_blank" rel="nofollow noopener">WordPress.org Removes Active Install Growth Data for Plugins</a>, Sarah Gooding, WP Tavern, 4 de octubre de 2022.</li>
<li><a href="https://wptavern.com/wordpress-org-plugin-developers-renew-demands-for-better-plugin-metrics" target="_blank" rel="nofollow noopener">WordPress.org Plugin Developers Renew Demands for Better Plugin Metrics</a>, Sarah Gooding, WP Tavern, 12 de septiembre de 2023.</li>
<li><a href="https://www.therepository.email/matt-mullenweg-responds-to-active-install-growth-data-ticket-for-first-time-in-four-years-cites-competing-interests" target="_blank" rel="nofollow noopener">Matt Mullenweg responds to active install growth data ticket for first time in four years</a>, Rae Morey, The Repository, 22 de julio de 2026.</li>
<li><a href="https://jeangalea.com/wordpress-plugin-search-gaming/" target="_blank" rel="nofollow noopener">How WordPress.org Plugin Search Gets Gamed</a>, Jean Galea, 16 de julio de 2026.</li>
<li><a href="https://mattcromwell.com/tips/what-does-active-installs-mean-in-the-wordpress-plugin-directory/" target="_blank" rel="nofollow noopener">What does «active installs» mean in the WordPress plugin directory?</a>, Matt Cromwell, actualizado el 22 de agosto de 2025.</li>
<li><a href="https://ayudawp.com/wpmonitor-dev-estadisticas-de-plugins-y-temas-wordpress-casi-como-deberian-ser/" target="_blank" rel="ugc noopener">wpmonitor.dev: estadísticas de plugins y temas WordPress (casi) como deberían ser</a>, Ayuda WordPress, 16 de diciembre de 2025.</li>
</ul>
<p><strong>Herramientas</strong> (servicios, herramientas y plugins varios)</p>
<ul>
<li><a href="https://www.statwp.com/" target="_blank" rel="nofollow noopener">statwp.com</a></li>
<li><a href="https://wp-rankings.com" target="_blank" rel="nofollow noopener">wp-rankings.com</a></li>
<li><a href="https://wpanalyze.com" target="_blank" rel="nofollow noopener">wpanalyze.com</a></li>
<li><a href="https://wpmonitor.dev/" target="_blank" rel="nofollow noopener">wpmonitor.dev</a></li>
<li><a href="https://wpmetrics.dev/" target="_blank" rel="nofollow noopener">wpmetrics.dev</a></li>
<li><a href="https://plugintracker.io/" target="_blank" rel="nofollow noopener">plugintracker.io</a></li>
<li><a href="https://plugintracker.dev/pricing" target="_blank" rel="nofollow noopener">plugintracker.dev/pricing</a> y <a href="https://plugintracker.dev/lifetime" target="_blank" rel="nofollow noopener">plugintracker.dev/lifetime</a></li>
<li><a href="https://wpstats.dev/" target="_blank" rel="nofollow noopener">wpstats.dev</a></li>
<li><a href="https://repoevo.com/pricing/" target="_blank" rel="nofollow noopener">repoevo.com/pricing</a></li>
<li><a href="https://wpbean.com/pluginradar-wordpress-plugin-analytics-rank-tracker/" target="_blank" rel="nofollow noopener">PluginRadar</a></li>
<li><a href="https://wp.md/wordpress-plugin-stats/" target="_blank" rel="nofollow noopener">wp.md/wordpress-plugin-stats</a> y <a href="https://wp.md/about/" target="_blank" rel="nofollow noopener">wp.md/about</a></li>
<li><a href="https://pluginscout.io/" target="_blank" rel="nofollow noopener">pluginscout.io</a> y <a href="https://pluginscout.io/how-rankings-work" target="_blank" rel="nofollow noopener">pluginscout.io/how-rankings-work</a></li>
<li><a href="https://thepluginpulse.com/pricing" target="_blank" rel="nofollow noopener">thepluginpulse.com/pricing</a></li>
<li><a href="https://whoknew.io/whoknew-directory-seo/" target="_blank" rel="nofollow noopener">whoknew.io/whoknew-directory-seo</a> y <a href="https://whoknew.io/terms/" target="_blank" rel="nofollow noopener">sus términos</a></li>
<li><a href="https://chromewebstore.google.com/detail/wp-ranking-free-wordpress/dnciijemlbpiojjabncdjiibhebplpep" target="_blank" rel="nofollow noopener">Extensión WP Ranking en la Chrome Web Store</a></li>
<li><a href="https://wphive.com" target="_blank" rel="nofollow noopener">wphive.com</a></li>
<li><a href="https://dlxplugins.com/announcements/dlxplugins-is-closing/" target="_blank" rel="nofollow noopener">Anuncio de cierre de DLX Plugins</a> (publicado el 5 de julio de 2026)</li>
<li>Plugins en WordPress.org:
<ul>
<li><a href="https://wordpress.org/plugins/contributor-resume/" target="_blank" rel="nofollow noopener">contributor-resume</a></li>
<li><a href="https://wordpress.org/plugins/repoevo/" target="_blank" rel="nofollow noopener">repoevo</a></li>
<li><a href="https://wordpress.org/plugins/wp-plugin-info-card/" target="_blank" rel="nofollow noopener">wp-plugin-info-card</a> (busca quien lo adopte)</li>
<li><a href="https://wordpress.org/plugins/plugin-stats-view/" target="_blank" rel="nofollow noopener">plugin-stats-view</a></li>
<li><a href="https://wordpress.org/plugins/theme-stats-view/" target="_blank" rel="nofollow noopener">theme-stats-view</a></li>
<li><a href="https://wordpress.org/plugins/whoknew-directory-seo/" target="_blank" rel="nofollow noopener">whoknew-directory-seo</a></li>
<li><a href="https://wordpress.org/plugins/wp-themes-plugins-stats/" target="_blank" rel="nofollow noopener">wp-themes-plugins-stats</a></li>
<li><a href="https://wordpress.org/plugins/easy-plugin-stats/" target="_blank" rel="nofollow noopener">easy-plugin-stats</a> (cerrado, fuera de la comparativa)</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/estadisticas-plugins-wordpress-org/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>«Las opciones cargadas automáticamente podrían afectar al rendimiento» ¿qué significa? ¿se pueden quitar sin romper nada?</title>
		<link>https://ayudawp.com/desactivar-autoload/</link>
					<comments>https://ayudawp.com/desactivar-autoload/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Tue, 06 Oct 2026 06:28:35 +0000</pubDate>
				<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[WPO - Optimizar WordPress]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Experto]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160409</guid>

					<description><![CDATA[¿Has entrado en «Herramientas > Salud del sitio» y te has encontrado el aviso de «Las opciones cargadas automáticamente podrían afectar al rendimiento»? Veamos de qué va esto…]]></description>
										<content:encoded><![CDATA[<p>¿Has entrado en «Herramientas &gt; Salud del sitio» y te has encontrado el <strong>aviso de error crítico</strong> de «<strong>Las opciones cargadas automáticamente podrían afectar al rendimiento</strong>»?</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160411 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/opciones-cargadas-automaticamente-podrian-afectar-al-rendimiento-1200x634.jpg" alt="" width="1200" height="634" srcset="https://ayudawp.com/wp-content/uploads/2026/10/opciones-cargadas-automaticamente-podrian-afectar-al-rendimiento-1200x634.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/opciones-cargadas-automaticamente-podrian-afectar-al-rendimiento-768x406.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/opciones-cargadas-automaticamente-podrian-afectar-al-rendimiento-1536x812.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/opciones-cargadas-automaticamente-podrian-afectar-al-rendimiento.jpg 1710w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Es de las preguntas que más me llegan últimamente, así que te adelanto mi respuesta breve, y es que <strong>en la mayoría de los casos no es urgente, y lo único que puedes tocar con tranquilidad es aquello que sabes de quién es</strong>.</p>
<p>Ya he escrito antes sobre el <code>autoload</code>, tanto sobre <a href="https://ayudawp.com/indice-tabla-options-wordpress/" target="_blank" rel="ugc noopener">índices en la tabla de opciones</a> como sobre <a href="https://ayudawp.com/optimizar-autoload-opciones-base-datos/" target="_blank" rel="ugc noopener">cómo detectar qué opciones necesitan cargarse automática</a>, pero hoy va de otra cosa. Nada de índices, sino de saber qué significa realmente el aviso, qué puedes quitar y qué no, y de hacerlo de manera que puedas deshacerlo si algo se tuerce.</p>
<p>Empezamos…</p>
<h2>¿Tiene importancia el aviso de salud del sitio de opciones cargadas automáticamente?</h2>
<p>Primero <strong>conviene saber qué mide exactamente ¿no?</strong>. Te cuento…</p>
<p>WordPress suma lo que ocupan todas las opciones de la tabla <code>wp_options</code> que se cargan en cada petición (las que tienen el <code>autoload</code> activo) y, <strong>si pasan de 800.000 bytes, te lanza el aviso como error crítico</strong>.</p>
<p>El umbral se puede cambiar con el filtro <a href="https://developer.wordpress.org/reference/hooks/site_status_autoloaded_options_size_limit/" target="_blank" rel="nofollow noopener"><code>site_status_autoloaded_options_size_limit</code></a>. Un detalle que despista a veces, por cierto, es que la herramienta de salud del sitio te muestra el tamaño en KB de 1.024 bytes, así que <strong>el aviso salta cuando ves unos 781 KB, no 800</strong>. Si tienes 790 KB y te sale el aviso, no es un fallo, es la conversión que hace.</p>
<p>Ahora bien, lo importante es que eso <strong>es una medida de tamaño, no una prueba de velocidad</strong>. WordPress no ha medido que tu web vaya lenta, solo que carga muchos datos de opciones en cada visita, y eso puede notarse o no según el caso.</p>
<h3>Cuándo NO te debería preocupar</h3>
<p>Si estás rozando el umbral, por ejemplo entre 800 KB y 1 MB, con un alojamiento decente y la web respondiendo bien, no pasa nada grave, sigue a lo tuyo. <strong>Unos cuantos KB de más no cambian nada</strong> que notes, y meterte a <strong>toquetear la base de datos para que desaparezca un aviso de rendimiento tiene más riesgo que beneficio</strong>.</p>
<h3>Cuándo SÍ merece tu atención</h3>
<p>Hay situaciones en las que el aviso sí podría apuntar a un <strong>problema real</strong>:</p>
<ul>
<li><strong>Varios MB de opciones cargadas automáticamente:</strong> ahí ya hay algo que no cuadra, normalmente un plugin guardando registros, estadísticas o cachés en la tabla de opciones.</li>
<li><strong>Alojamiento compartido sin caché de objetos:</strong> cada visita que no sirve la caché de página lee y procesa todo ese bloque desde la base de datos.</li>
<li><strong>Un tamaño que crece semana a semana:</strong> si limpias y a los pocos días vuelves a estar igual, hay algo escribiendo sin control y el problema está en ese algo, no en el <code>autoload</code>.</li>
<li><strong>Caché de objetos con Memcached y un <code>autoload</code> muy grande:</strong> te lo explico ahora, que esto si tiene su aquél.</li>
</ul>
<p>WordPress guarda todas las opciones cargadas automáticamente en la caché de objetos como un único elemento, y Memcached, por defecto, no admite elementos de más de 1 MB. Si ese bloque no cabe, no se guarda en caché, y cada página paga la consulta completa más una llamada inútil a Memcached.</p>
<p>Eso sí, no te asustes antes de tiempo, porque la extensión <code>memcached</code> de PHP <a href="https://www.php.net/manual/en/memcached.constants.php" target="_blank" rel="nofollow noopener">comprime por defecto los valores de más de 2.000 bytes</a>, y el límite cuenta sobre el tamaño ya comprimido, así que con 1,2 MB en salud del sitio lo normal es que siga cabiendo sin problema. Con Redis en esto no hay problema porque admite valores de hasta 512 MB.</p>
<h3>¿Y si subo el umbral con el filtro?</h3>
<p>Puedes hacerlo, pero <strong>solo sirve para que desaparezca el aviso</strong>, WordPress sigue cargando exactamente lo mismo. Yo solo lo haría, si acaso, después de revisar la tabla y decidir que lo que hay es lo que tiene que haber, y ni siquiera así es recomendable, porque la base de datos no es algo fijo, y <strong>si empeora el problema no te enterarías</strong>.</p>
<h2>Quitar el autoload no es borrar</h2>
<p>Un par de cosas que tienes que tener claro antes de tocar nada:</p>
<ul>
<li>Cuando una opción tiene el <code>autoload</code> activo, WordPress la carga junto con todas las demás al principio de cada petición, en una sola consulta.</li>
<li>Cuando lo desactivas, <strong>la opción sigue en su sitio con su valor intacto</strong>, y si algún plugin la pide, WordPress hace una consulta para ir a buscarla. Te cuesta, como mucho, una consulta más en las páginas donde se use.</li>
</ul>
<p><strong>El riesgo de verdad no está en desactivar el <code>autoload</code> sino en borrar opciones</strong>. Si borras la opción de un plugin activo lo normal es que la vuelva a crear con los valores por defecto y pierdas sus ajustes, y si es de algo que no sabías que se usaba te enteras cuando ya ha dejado de funcionar.</p>
<h2>Lo importante es medir bien las opciones cargadas automáticamente</h2>
<p>Casi todos los tutoriales (los míos incluidos, que conste) usan consultas con <code>WHERE autoload='yes'</code>, y desde WordPress 6.6 eso ya no es así (del todo). Las opciones de WordPress ya no se guardan con <code>yes</code> y <code>no</code>, sino con <a href="https://make.wordpress.org/core/2024/06/18/options-api-disabling-autoload-for-large-options/" target="_blank" rel="nofollow noopener">cinco valores nuevos</a>:</p>
<ul>
<li><strong><code>on</code>:</strong> el plugin pidió expresamente que se cargue automáticamente.</li>
<li><strong><code>off</code>:</strong> el plugin pidió expresamente que no se cargue automáticamente.</li>
<li><strong><code>auto</code>:</strong> el plugin no dijo nada y WordPress decide, que hoy por hoy es cargarla automáticamente.</li>
<li><strong><code>auto-on</code>:</strong> WordPress decidió cargarla automáticamente.</li>
<li><strong><code>auto-off</code>:</strong> WordPress decidió no cargarla automáticamente (pasa con las opciones nuevas de más de 150.000 bytes).</li>
</ul>
<p>Las filas antiguas conservan su <code>yes</code> o <code>no</code>, y WordPress las trata como <code>on</code> y <code>off</code>. Por resumir, <strong>se cargan automáticamente las que tienen <code>yes</code>, <code>on</code>, <code>auto-on</code> y <code>auto</code></strong>, así que si solo buscas <code>yes</code> te dejas fuera todo lo que se haya guardado en los dos últimos años.</p>
<p>Una cosita más, lo de no cargar automáticamente opciones grandes solo se aplica al guardar opciones nuevas o actualizadas, no limpia lo que ya tenías en la base de datos. Y ya que estamos, <strong>no necesitas crear ningún índice sobre la columna <code>autoload</code></strong>, porque WordPress trae uno de serie desde la versión 5.3, no es de ayer.</p>
<h3>Antes de nada, siempre haz diagnóstico de lo que tienes</h3>
<p>Estas tres consultas que te pongo a continuación son de solo lectura, así que puedes ejecutarlas en phpMyAdmin sin ningún riesgo. Cambia <code>wp_</code> por el prefijo de tus tablas si usas otro.</p>
<p><strong>Tamaño total y número de opciones cargadas automáticamente</strong> (lo mismo que mide salud del sitio)<strong>:</strong></p>
<pre>SELECT COUNT(*) AS opciones, ROUND(SUM(LENGTH(option_value)) / 1024) AS kb
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto');</pre>
<p><strong>Las 30 opciones cargadas automáticamente más pesadas:</strong></p>
<pre>SELECT option_name, autoload, ROUND(LENGTH(option_value) / 1024, 1) AS kb
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto')
ORDER BY LENGTH(option_value) DESC
LIMIT 30;</pre>
<p><strong>Qué plugin o tema consume más recursos</strong> (agrupados por prefijo)<strong>:</strong></p>
<pre>SELECT SUBSTRING_INDEX(option_name, '_', 1) AS prefijo, COUNT(*) AS opciones,
ROUND(SUM(LENGTH(option_value)) / 1024, 1) AS kb
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto')
GROUP BY prefijo
ORDER BY kb DESC
LIMIT 20;</pre>
<p>Los transitorios empiezan por guion bajo (<code>_transient_...</code>), así que en esta última te aparecen agrupados con el prefijo vacío.</p>

<a href="https://ayudawp.com/desactivar-autoload/query-sql-options-autoload/" rel="nofollow"><img width="1200" height="896" src="https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-1200x896.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-1200x896.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-768x573.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-1536x1146.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/desactivar-autoload/query-sql-options-autoload-mas-pesadas/" rel="nofollow"><img width="1200" height="1034" src="https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-mas-pesadas-1200x1034.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-mas-pesadas-1200x1034.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-mas-pesadas-768x662.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-mas-pesadas-1536x1323.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-mas-pesadas.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/desactivar-autoload/query-sql-options-autoload-plugins-temas-mas-pesados/" rel="nofollow"><img width="1200" height="781" src="https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-plugins-temas-mas-pesados-1200x781.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-plugins-temas-mas-pesados-1200x781.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-plugins-temas-mas-pesados-768x500.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-plugins-temas-mas-pesados-1536x999.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/query-sql-options-autoload-plugins-temas-mas-pesados.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>

<h2>Qué opciones puedes pasar a <code>off</code> y cuáles no</h2>
<p>Esto no es algo del manual, es una regla mía, la que aplico en todas las webs que mantengo, pero eso sí, es muy sencilla:</p>
<blockquote><p><strong>Si no sabes al 100% de qué es algo en la base de datos no lo toques</strong>. Has vivido con ello hasta ahora, seguro que puedes seguir viviendo con ello.</p></blockquote>
<p>Y no lo digo por decir, cuando reviso la base de datos de un cliente lo hago con él delante, porque es el único que sabe qué tiene y qué ha tenido instalado, y aun así hay tablas y opciones que ni por el nombre ni por su contenido te dejan adivinar de dónde vienen. Ningún plugin ni ninguna consulta te lo va a resolver, vemos algo más de detalle luego.</p>
<h3>Lo que NO deberías tocar nunca</h3>
<p>Las opciones del núcleo de WordPress. Se leen en todas las peticiones, así que quitarles el <code>autoload</code> no ahorra nada y añade consultas.</p>
<p>Algunas de las más habituales en la lista de pesadas son <code>siteurl</code>, <code>home</code>, <code>active_plugins</code>, <code>template</code>, <code>stylesheet</code>, <code>cron</code>, <code>rewrite_rules</code>, <code>wp_user_roles</code>, <code>sidebars_widgets</code> y todas las que empiezan por <code>widget_</code> o <code>theme_mods_</code>.</p>
<p>Si <code>cron</code> o <code>rewrite_rules</code> pesan una barbaridad, <strong>el <code>autoload</code> no es el problema, es el síntoma</strong>. Un <code>cron</code> enorme suele indicar tareas programadas que se acumulan sin ejecutarse, y unas reglas de rewrite gigantes, algún plugin que las regenera sin parar. Eso se arregla en el origen, no manoseando la base de datos.</p>
<h3>Lo que SÍ puedes pasar a <code>off</code></h3>
<ul>
<li><strong>Opciones de plugins o temas que SABES que ya no usas:</strong> si recuerdas perfectamente haber desinstalado un plugin de formularios hace dos años y ves sus opciones en la lista, fuera <code>autoload</code>, que no las necesita nadie.</li>
<li><strong>Datos grandes de plugins activos que solo se usan en el escritorio:</strong> registros de actividad, estadísticas, informes o cachés internas de un plugin que conoces, y que no hacen falta para mostrar tu web a los visitantes.</li>
<li><strong>Transitorios cargados automáticamente:</strong> los datos transitorios con caducidad ya se guardan sin <code>autoload</code>, así que los que te salgan cargados automáticamente son transitorios sin caducidad. Pasarlos a <code>off</code> es inofensivo, como mucho añade un par de consultas donde se usen.</li>
</ul>
<p>Todo lo que no encaje en esa lista se queda como está. Te lo repito porque es lo que evita disgustos, <strong>ante la duda no lo toques</strong>.</p>
<h2>Cómo hacer limpieza (segura) de opciones cargadas automáticamente con SQL</h2>
<p>Hacer una copia de seguridad completa de la base de datos antes de cada mínimo cambio, comprobar exhaustivamente y pasar al siguiente es lo que te dirá todo el mundo, y en la práctica no lo hace nadie, porque es inviable, imagina ese proceso multiplicado por decenas o centenares de opciones. <strong>¡Que sí, que es lo recomendable, lo más seguro, pero no te mientas, no lo vas a hacer!</strong></p>
<p>Así que vamos a hacerlo de otra manera, razonable, viable, sencilla.</p>
<p>La cosa es hacer una copia completa al principio, y una tabla pequeña con los valores originales que te permite deshacer cada cambio en una sola consulta. Antes de nada haz esa copia de seguridad de la base de datos completa, es tu red por si todo lo demás falla.</p>
<h3>Guarda el valor original de las opciones que vas a cambiar</h3>
<p>Sustituye <code>opcion_1</code> y <code>opcion_2</code> por los nombres de las opciones que hayas decidido pasar a <code>off</code>:</p>
<pre>CREATE TABLE wp_autoload_copia AS
SELECT option_name, autoload
FROM wp_options
WHERE option_name IN ('opcion_1', 'opcion_2');</pre>
<p>Si más adelante haces una segunda tanda, la tabla ya existe y la consulta anterior te dará error. En ese caso añade las nuevas así:</p>
<pre>INSERT INTO wp_autoload_copia (option_name, autoload)
SELECT option_name, autoload
FROM wp_options
WHERE option_name IN ('opcion_3');</pre>
<h3>Desactiva el autoload (donde querías llegar)</h3>
<pre>UPDATE wp_options
SET autoload = 'off'
WHERE option_name IN ('opcion_1', 'opcion_2');</pre>
<p>Uso <code>off</code> y no <code>no</code> porque es el valor que usa WordPress actualmente.</p>
<h3>Vacía la caché de objetos si la tienes (extra)</h3>
<p>Si tu web usa caché de objetos persistente (Redis o Memcached), las opciones cargarla automáticamente están guardadas ahí y el cambio no se nota hasta que la vacíes. Hazlo desde el plugin de caché que uses o desde el panel de tu alojamiento. Si no tienes caché de objetos persistente te ahorras este paso.</p>
<h3>Si algo falla da marcha atrás</h3>
<p>Para deshacer todos los cambios de golpe:</p>
<pre>UPDATE wp_options o
JOIN wp_autoload_copia c ON o.option_name = c.option_name
SET o.autoload = c.autoload;</pre>
<p>Y si solo quieres restaurar una, añade al final <code>WHERE c.option_name = 'opcion_1'</code>. Después, vuelve a vaciar la caché de objetos si la tienes.</p>
<h3>Cuando todo esté estable borra la copia (el paso final)</h3>
<p>Pasadas unas semanas, días como mínimo y solo si es un sitio pequeño, borra la copia que hiciste al principio, sin problemas, ya no la necesitas:</p>
<pre>DROP TABLE wp_autoload_copia;</pre>
<h3>Lo mismo, pero con un plugin de usar y tirar</h3>
<p>Si prefieres no tocar phpMyAdmin te he preparado un pequeño plugin que hace lo mismo desde el escritorio de WordPress, y además se encarga de vaciar la caché de objetos por ti, porque usa la función del núcleo <code>wp_set_option_autoload_values()</code>, que cambia solo el <code>autoload</code> sin tocar el valor de la opción.</p>
<p>¿Que por qué un plugin normal y no un <code>mu-plugin</code> (esos que van en <code>wp-content/mu-plugins</code> y se cargan siempre)? Pues porque un <code>mu-plugin</code> no aparece en la lista de plugins de siempre ni se puede desactivar, y es facilísimo olvidarse de que está ahí. Esto es una herramienta para usarla y luego borrarla, así que mejor algo que ves en <strong>Plugins</strong> cada vez que entras y que desactivas y borras con dos clics cuando acabas.</p>
<p>Esto es lo que hace:</p>
<ul>
<li>Antes de dejarte tocar nada, te obliga a descargar una copia completa de la base de datos en un archivo <code>.sql</code>. Hasta que no la descargas, las opciones no se pueden seleccionar. Si tu base de datos es muy grande y la descarga falla, puedes hacer la copia desde phpMyAdmin o desde el panel de tu alojamiento y confirmarlo en el propio plugin.</li>
<li>Te muestra el tamaño total del <code>autoload</code> y las 50 opciones cargadas automáticamente más pesadas, que es donde está el peso, con un enlace para verlas todas si lo necesitas.</li>
<li>Bloquea las opciones del núcleo, así que no puedes desactivarlas aunque te despistes.</li>
<li>Antes de cambiar nada, guarda el valor original de cada opción en una opción propia que no se carga automáticamente.</li>
<li>Te enseña las opciones que has cambiado, con su valor anterior y el actual, y te avisa si alguna ha vuelto a cargarse automáticamente sola.</li>
<li>Te permite deshacer los cambios de las que quieras.</li>
<li>Solo lo pueden usar los administradores, y todas las acciones llevan su comprobación de seguridad.</li>
</ul>
<p>Necesita WordPress 6.6 o superior, y montarlo es muy fácil:</p>
<ol>
<li>Crea un archivo llamado <code>ayudawp-desactivar-autoload.php</code>, pega dentro el código.</li>
<li>Guárdalo en tu ordenador en una carpeta llamada <code>ayudawp-desactivar-autoload</code>.</li>
<li>Comprime la carpeta en un zip y súbelo desde «<strong>Plugins &gt; Añadir nuevo plugin &gt; Subir plugin</strong>», como <a href="https://ayudawp.com/instalar-plugins-wordpress/" target="_blank" rel="ugc noopener">cualquier otro plugin</a>.</li>
</ol>
<pre>&lt;?php
/**
 * Plugin Name:       Desactivar opciones en autoload (temporal - borrar tras utilizarlo)
 * Description:       Herramienta temporal para revisar las opciones de la tabla wp_options que se cargan en cada visita (autoload) y desactivar la carga automática de las que elijas, sin borrarlas. Antes de tocar nada obliga a descargar una copia completa de la base de datos, guarda el valor original de cada opción que cambias y te permite deshacer cada cambio. Las opciones del núcleo de WordPress están bloqueadas. Úsala desde Herramientas y, cuando termines, desactívala y bórrala.
 * Version:           1.0.0
 * Requires at least: 6.6
 * Requires PHP:      7.4
 * Author:            Fernando Tellado
 * Author URI:        https://ayudawp.com
 * License:           GPL-2.0-or-later
 * Text Domain:       ayudawp-desactivar-autoload
 */

defined( 'ABSPATH' ) || exit;

// Option that stores the original autoload value of every option we change.
const AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP = 'ayudawp_desactivar_autoload_backup';

// Option that stores when the last full database backup was downloaded or confirmed.
const AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY = 'ayudawp_desactivar_autoload_db_copy';

// How long a backup counts as recent before the tool asks for a new one.
const AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY_TTL = DAY_IN_SECONDS;

// Register the uninstall callback only once, on activation.
register_activation_hook(
	__FILE__,
	function () {
		register_uninstall_hook( __FILE__, 'ayudawp_desactivar_autoload_uninstall' );
	}
);

/**
 * Remove the plugin options when the plugin is deleted.
 */
function ayudawp_desactivar_autoload_uninstall() {
	delete_option( AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP );
	delete_option( AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY );
}

add_action( 'admin_menu', 'ayudawp_desactivar_autoload_menu' );

/**
 * Add the tool under Tools.
 */
function ayudawp_desactivar_autoload_menu() {
	$hook = add_management_page(
		__( 'Desactivar opciones en autoload (temporal - borrar tras utilizarlo)', 'ayudawp-desactivar-autoload' ),
		__( 'Desactivar autoload', 'ayudawp-desactivar-autoload' ),
		'manage_options',
		'ayudawp-desactivar-autoload',
		'ayudawp_desactivar_autoload_page'
	);

	if ( $hook ) {
		add_action( 'load-' . $hook, 'ayudawp_desactivar_autoload_handle' );
	}
}

/**
 * URL of the tool page.
 *
 * @param array $args Extra query args.
 * @return string
 */
function ayudawp_desactivar_autoload_url( $args = array() ) {
	return add_query_arg( array_merge( array( 'page' =&gt; 'ayudawp-desactivar-autoload' ), $args ), admin_url( 'tools.php' ) );
}

/**
 * Whether a full database backup was downloaded or confirmed recently.
 *
 * @return bool
 */
function ayudawp_desactivar_autoload_has_recent_copy() {
	$time = (int) get_option( AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY, 0 );
	return $time &amp;&amp; ( time() - $time ) &lt; AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY_TTL;
}

/**
 * Core options we never touch, plus widget and theme_mods prefixes.
 *
 * @param string $name Option name.
 * @return bool
 */
function ayudawp_desactivar_autoload_is_protected( $name ) {
	global $wpdb;

	$core = array(
		'siteurl', 'home', 'blogname', 'blogdescription', 'admin_email', 'active_plugins',
		'template', 'stylesheet', 'current_theme', 'cron', 'rewrite_rules', 'permalink_structure',
		'category_base', 'tag_base', 'blog_charset', 'html_type', 'WPLANG', 'timezone_string',
		'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'show_on_front',
		'page_on_front', 'page_for_posts', 'posts_per_page', 'blog_public', 'default_role',
		'users_can_register', 'db_version', 'initial_db_version', 'sidebars_widgets',
		'sticky_posts', 'uninstall_plugins', 'recently_activated', 'can_compress_scripts',
		'upload_path', 'upload_url_path', 'uploads_use_yearmonth_folders', 'site_icon',
		'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w',
		'medium_size_h', 'medium_large_size_w', 'medium_large_size_h', 'large_size_w',
		'large_size_h', 'wp_page_for_privacy_policy', 'recovery_keys', 'fresh_site',
		'auto_update_plugins', 'auto_update_themes', 'wp_force_deactivated_plugins',
		$wpdb-&gt;prefix . 'user_roles',
	);

	if ( in_array( $name, $core, true ) ) {
		return true;
	}

	foreach ( array( 'widget_', 'theme_mods_' ) as $prefix ) {
		if ( 0 === strpos( $name, $prefix ) ) {
			return true;
		}
	}

	return false;
}

/**
 * Process downloads and forms, then redirect (post/redirect/get).
 */
function ayudawp_desactivar_autoload_handle() {
	if ( ! current_user_can( 'manage_options' ) ) {
		return;
	}

	// Full database download.
	if ( isset( $_GET['ayudawp_desactivar_autoload_download'] ) ) {
		check_admin_referer( 'ayudawp_desactivar_autoload_download' );
		ayudawp_desactivar_autoload_download_database();
		exit;
	}

	if ( ! isset( $_POST['ayudawp_desactivar_autoload_action'] ) || ! function_exists( 'wp_autoload_values_to_autoload' ) ) {
		return;
	}

	check_admin_referer( 'ayudawp_desactivar_autoload' );

	global $wpdb;

	$action   = sanitize_key( wp_unslash( $_POST['ayudawp_desactivar_autoload_action'] ) );
	$names    = isset( $_POST['ayudawp_desactivar_autoload_options'] ) ? array_map( 'sanitize_text_field', (array) wp_unslash( $_POST['ayudawp_desactivar_autoload_options'] ) ) : array();
	$backup   = get_option( AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP, array() );
	$backup   = is_array( $backup ) ? $backup : array();
	$autoload = wp_autoload_values_to_autoload();
	$changes  = array();

	// Backup made by other means (phpMyAdmin, hosting panel...).
	if ( 'confirm_copy' === $action ) {
		if ( ! empty( $_POST['ayudawp_desactivar_autoload_confirm'] ) ) {
			update_option( AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY, time(), false );
		}
		wp_safe_redirect( ayudawp_desactivar_autoload_url() );
		exit;
	}

	if ( 'disable' === $action ) {
		// No changes without a recent full backup.
		if ( ! ayudawp_desactivar_autoload_has_recent_copy() ) {
			wp_safe_redirect( ayudawp_desactivar_autoload_url( array( 'ayudawp_done' =&gt; 'nocopy' ) ) );
			exit;
		}

		foreach ( $names as $name ) {
			if ( ayudawp_desactivar_autoload_is_protected( $name ) ) {
				continue;
			}

			// phpcs:ignore WordPress.DB.DirectDatabaseQuery
			$current = $wpdb-&gt;get_var( $wpdb-&gt;prepare( "SELECT autoload FROM {$wpdb-&gt;options} WHERE option_name = %s", $name ) );

			if ( null === $current || ! in_array( $current, $autoload, true ) ) {
				continue;
			}

			// Keep the very first original value if the option was changed before.
			if ( ! isset( $backup[ $name ] ) ) {
				$backup[ $name ] = $current;
			}

			$changes[ $name ] = false;
		}

		// Save the original values before touching anything.
		update_option( AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP, $backup, false );
	}

	if ( 'restore' === $action ) {
		foreach ( $names as $name ) {
			if ( ! isset( $backup[ $name ] ) ) {
				continue;
			}

			$changes[ $name ] = in_array( $backup[ $name ], $autoload, true );
			unset( $backup[ $name ] );
		}
	}

	if ( $changes ) {
		// Core function (WP 6.4+): changes autoload only and clears the options cache.
		wp_set_option_autoload_values( $changes );
	}

	if ( 'restore' === $action ) {
		if ( $backup ) {
			update_option( AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP, $backup, false );
		} else {
			delete_option( AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP );
		}
	}

	wp_safe_redirect(
		ayudawp_desactivar_autoload_url(
			array(
				'ayudawp_done'  =&gt; $action,
				'ayudawp_count' =&gt; count( $changes ),
			)
		)
	);
	exit;
}

/**
 * Stream a full SQL dump of every WordPress table in the database.
 */
function ayudawp_desactivar_autoload_download_database() {
	global $wpdb;

	if ( function_exists( 'set_time_limit' ) ) {
		@set_time_limit( 0 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors
	}

	// phpcs:disable WordPress.DB.DirectDatabaseQuery, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.Security.EscapeOutput.OutputNotEscaped
	$tables = $wpdb-&gt;get_col(
		$wpdb-&gt;prepare( 'SHOW FULL TABLES WHERE Table_type = %s', 'BASE TABLE' )
	);

	// Only the tables of this WordPress install (all sites in a network).
	$prefix = $wpdb-&gt;base_prefix;
	$tables = array_values(
		array_filter(
			$tables,
			function ( $table ) use ( $prefix ) {
				return 0 === strpos( $table, $prefix );
			}
		)
	);

	// Record the backup before sending anything.
	update_option( AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY, time(), false );

	while ( ob_get_level() ) {
		ob_end_clean();
	}

	$filename = sanitize_file_name( DB_NAME . '-' . gmdate( 'Y-m-d-His' ) . '.sql' );

	nocache_headers();
	header( 'Content-Type: application/sql; charset=utf-8' );
	header( 'Content-Disposition: attachment; filename="' . $filename . '"' );

	echo "-- Copia completa de la base de datos\n";
	echo '-- Sitio: ' . home_url() . "\n";
	echo '-- Fecha (UTC): ' . gmdate( 'Y-m-d H:i:s' ) . "\n\n";
	echo "SET NAMES utf8mb4;\nSET FOREIGN_KEY_CHECKS = 0;\nSET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';\n\n";

	foreach ( $tables as $table ) {
		$create = $wpdb-&gt;get_row( "SHOW CREATE TABLE `{$table}`", ARRAY_N );

		if ( empty( $create[1] ) ) {
			continue;
		}

		echo "DROP TABLE IF EXISTS `{$table}`;\n" . $create[1] . ";\n\n";

		$batch  = 500;
		$offset = 0;

		do {
			$rows = $wpdb-&gt;get_results( $wpdb-&gt;prepare( "SELECT * FROM `{$table}` LIMIT %d OFFSET %d", $batch, $offset ), ARRAY_A );

			if ( $rows ) {
				$columns = '`' . implode( '`, `', array_keys( $rows[0] ) ) . '`';
				$values  = array();

				foreach ( $rows as $row ) {
					$fields = array();
					foreach ( $row as $value ) {
						$fields[] = null === $value
							? 'NULL'
							: "'" . $wpdb-&gt;remove_placeholder_escape( $wpdb-&gt;_real_escape( $value ) ) . "'";
					}
					$values[] = '(' . implode( ', ', $fields ) . ')';
				}

				echo "INSERT INTO `{$table}` ({$columns}) VALUES\n" . implode( ",\n", $values ) . ";\n";
				flush();
			}

			$offset += $batch;
			$wpdb-&gt;flush();
		} while ( count( $rows ) === $batch );

		echo "\n";
	}

	echo "SET FOREIGN_KEY_CHECKS = 1;\n";
	// phpcs:enable
}

/**
 * Render the tool page.
 */
function ayudawp_desactivar_autoload_page() {
	if ( ! current_user_can( 'manage_options' ) ) {
		return;
	}

	echo '&lt;div class="wrap"&gt;&lt;h1&gt;' . esc_html__( 'Desactivar opciones en autoload (temporal - borrar tras utilizarlo)', 'ayudawp-desactivar-autoload' ) . '&lt;/h1&gt;';

	if ( ! function_exists( 'wp_autoload_values_to_autoload' ) ) {
		echo '&lt;div class="notice notice-error"&gt;&lt;p&gt;' . esc_html__( 'Esta herramienta necesita WordPress 6.6 o superior.', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;';
		return;
	}

	global $wpdb;

	// phpcs:disable WordPress.Security.NonceVerification.Recommended
	if ( isset( $_GET['ayudawp_done'] ) ) {
		$done  = sanitize_key( wp_unslash( $_GET['ayudawp_done'] ) );
		$count = isset( $_GET['ayudawp_count'] ) ? absint( $_GET['ayudawp_count'] ) : 0;

		if ( 'nocopy' === $done ) {
			echo '&lt;div class="notice notice-error is-dismissible"&gt;&lt;p&gt;' . esc_html__( 'No se ha cambiado nada. Antes tienes que descargar una copia completa de la base de datos.', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;&lt;/div&gt;';
		} else {
			$text = 'restore' === $done
				/* translators: %d: number of options */
				? sprintf( __( 'Autoload restaurado en %d opciones.', 'ayudawp-desactivar-autoload' ), $count )
				/* translators: %d: number of options */
				: sprintf( __( 'Autoload desactivado en %d opciones.', 'ayudawp-desactivar-autoload' ), $count );
			echo '&lt;div class="notice notice-success is-dismissible"&gt;&lt;p&gt;' . esc_html( $text ) . '&lt;/p&gt;&lt;/div&gt;';
		}
	}

	$show_all = isset( $_GET['ayudawp_ver'] ) &amp;&amp; 'todas' === sanitize_key( wp_unslash( $_GET['ayudawp_ver'] ) );
	// phpcs:enable

	$has_copy = ayudawp_desactivar_autoload_has_recent_copy();

	// Section 1: mandatory full database backup.
	echo '&lt;h2&gt;' . esc_html__( '1. Descarga una copia completa de la base de datos (obligatorio)', 'ayudawp-desactivar-autoload' ) . '&lt;/h2&gt;';
	echo '&lt;p&gt;' . esc_html__( 'Hasta que no descargues una copia completa de la base de datos no podrás desactivar el autoload de ninguna opción. La copia es válida durante 24 horas. Guarda el archivo .sql en tu ordenador, que es lo que te permite restaurarlo todo si algo sale mal.', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;';

	if ( $has_copy ) {
		$time = (int) get_option( AYUDAWP_DESACTIVAR_AUTOLOAD_DB_COPY, 0 );
		printf(
			'&lt;p&gt;&lt;strong&gt;%s&lt;/strong&gt;&lt;/p&gt;',
			esc_html(
				sprintf(
					/* translators: %s: date and time */
					__( 'Última copia: %s. Ya puedes seguir con el paso 2.', 'ayudawp-desactivar-autoload' ),
					wp_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $time )
				)
			)
		);
	}

	printf(
		'&lt;p&gt;&lt;a href="%1$s" class="button button-primary"&gt;%2$s&lt;/a&gt;&lt;/p&gt;',
		esc_url( wp_nonce_url( ayudawp_desactivar_autoload_url( array( 'ayudawp_desactivar_autoload_download' =&gt; 1 ) ), 'ayudawp_desactivar_autoload_download' ) ),
		esc_html__( 'Descargar la base de datos completa (.sql)', 'ayudawp-desactivar-autoload' )
	);

	echo '&lt;p class="description"&gt;' . esc_html__( 'Tras pulsar el botón, recarga esta página para continuar. Si tu base de datos es muy grande y la descarga falla, haz la copia desde phpMyAdmin o desde el panel de tu alojamiento y confírmalo aquí:', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;';
	echo '&lt;form method="post"&gt;';
	wp_nonce_field( 'ayudawp_desactivar_autoload' );
	echo '&lt;input type="hidden" name="ayudawp_desactivar_autoload_action" value="confirm_copy"&gt;';
	echo '&lt;label&gt;&lt;input type="checkbox" name="ayudawp_desactivar_autoload_confirm" value="1" required&gt; ' . esc_html__( 'He hecho una copia completa de la base de datos por otro medio y la tengo guardada.', 'ayudawp-desactivar-autoload' ) . '&lt;/label&gt; ';
	submit_button( __( 'Confirmar', 'ayudawp-desactivar-autoload' ), 'secondary', 'submit', false );
	echo '&lt;/form&gt;';

	// Section 2: autoloaded options.
	$autoload     = wp_autoload_values_to_autoload();
	$placeholders = implode( ',', array_fill( 0, count( $autoload ), '%s' ) );
	$limit_sql    = $show_all ? '' : ' LIMIT 50';

	// phpcs:disable WordPress.DB.DirectDatabaseQuery, WordPress.DB.PreparedSQLPlaceholders, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
	$totals = $wpdb-&gt;get_row(
		$wpdb-&gt;prepare( "SELECT COUNT(*) AS total, SUM(LENGTH(option_value)) AS size FROM {$wpdb-&gt;options} WHERE autoload IN ($placeholders)", $autoload )
	);

	$rows = $wpdb-&gt;get_results(
		$wpdb-&gt;prepare(
			"SELECT option_name, autoload, LENGTH(option_value) AS size FROM {$wpdb-&gt;options} WHERE autoload IN ($placeholders) ORDER BY size DESC{$limit_sql}",
			$autoload
		)
	);
	// phpcs:enable

	echo '&lt;h2&gt;' . esc_html__( '2. Opciones cargadas automáticamente', 'ayudawp-desactivar-autoload' ) . '&lt;/h2&gt;';

	printf(
		'&lt;p&gt;%s&lt;/p&gt;',
		esc_html(
			sprintf(
				/* translators: 1: number of options, 2: total size */
				__( 'Opciones cargadas automáticamente: %1$d, con un tamaño total de %2$s.', 'ayudawp-desactivar-autoload' ),
				(int) $totals-&gt;total,
				size_format( (int) $totals-&gt;size, 1 )
			)
		)
	);

	printf(
		'&lt;p&gt;%1$s &lt;a href="%2$s"&gt;%3$s&lt;/a&gt;&lt;/p&gt;',
		esc_html(
			$show_all
				? __( 'Estás viendo todas las opciones cargadas automáticamente, de la más pesada a la más ligera.', 'ayudawp-desactivar-autoload' )
				: __( 'Estás viendo las 50 opciones cargadas automáticamente más pesadas.', 'ayudawp-desactivar-autoload' )
		),
		esc_url( $show_all ? ayudawp_desactivar_autoload_url() : ayudawp_desactivar_autoload_url( array( 'ayudawp_ver' =&gt; 'todas' ) ) ),
		esc_html( $show_all ? __( 'Ver solo las 50 más pesadas', 'ayudawp-desactivar-autoload' ) : __( 'Ver todas', 'ayudawp-desactivar-autoload' ) )
	);

	echo '&lt;p&gt;' . esc_html__( 'Marca solo las opciones que sepas con seguridad de qué plugin o tema son. Las del núcleo de WordPress están bloqueadas. Desactivar el autoload no borra la opción, solo hace que no se cargue en cada visita.', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;';

	if ( ! $has_copy ) {
		echo '&lt;div class="notice notice-warning inline"&gt;&lt;p&gt;' . esc_html__( 'Descarga primero la copia completa de la base de datos (paso 1) para poder desactivar el autoload.', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;&lt;/div&gt;';
	}

	echo '&lt;form method="post"&gt;';
	wp_nonce_field( 'ayudawp_desactivar_autoload' );
	echo '&lt;input type="hidden" name="ayudawp_desactivar_autoload_action" value="disable"&gt;';
	echo '&lt;table class="widefat striped"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;' . esc_html__( 'Opción', 'ayudawp-desactivar-autoload' ) . '&lt;/th&gt;&lt;th&gt;autoload&lt;/th&gt;&lt;th&gt;' . esc_html__( 'Tamaño', 'ayudawp-desactivar-autoload' ) . '&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';

	foreach ( $rows as $row ) {
		$protected = ayudawp_desactivar_autoload_is_protected( $row-&gt;option_name );
		printf(
			'&lt;tr&gt;&lt;td&gt;%1$s&lt;/td&gt;&lt;td&gt;&lt;code&gt;%2$s&lt;/code&gt;&lt;/td&gt;&lt;td&gt;%3$s&lt;/td&gt;&lt;td&gt;%4$s&lt;/td&gt;&lt;/tr&gt;',
			$protected
				? esc_html__( 'Núcleo', 'ayudawp-desactivar-autoload' )
				: '&lt;input type="checkbox" name="ayudawp_desactivar_autoload_options[]" value="' . esc_attr( $row-&gt;option_name ) . '"' . disabled( $has_copy, false, false ) . '&gt;',
			esc_html( $row-&gt;option_name ),
			esc_html( $row-&gt;autoload ),
			esc_html( size_format( (int) $row-&gt;size, 1 ) )
		);
	}

	echo '&lt;/tbody&gt;&lt;/table&gt;';
	submit_button( __( 'Desactivar autoload de las seleccionadas', 'ayudawp-desactivar-autoload' ), 'primary', 'submit', true, $has_copy ? null : array( 'disabled' =&gt; 'disabled' ) );
	echo '&lt;/form&gt;';

	// Section 3: changed options and undo.
	$backup = get_option( AYUDAWP_DESACTIVAR_AUTOLOAD_BACKUP, array() );

	echo '&lt;h2&gt;' . esc_html__( '3. Opciones modificadas', 'ayudawp-desactivar-autoload' ) . '&lt;/h2&gt;';
	echo '&lt;p&gt;' . esc_html__( 'Cada vez que desactivas el autoload de una opción, aparece en esta tabla con el valor que tenía antes y el que tiene ahora. Desde aquí puedes deshacer el cambio de las que quieras. Si una opción aparece como «Ha vuelto a cargarse automáticamente», es que su plugin la guarda forzando el autoload y no merece la pena insistir. Ojo, al borrar este plugin se borra también esta lista, así que deshaz lo que quieras deshacer antes de borrarlo.', 'ayudawp-desactivar-autoload' ) . '&lt;/p&gt;';

	if ( empty( $backup ) || ! is_array( $backup ) ) {
		echo '&lt;p&gt;&lt;em&gt;' . esc_html__( 'Todavía no has modificado ninguna opción.', 'ayudawp-desactivar-autoload' ) . '&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;';
		return;
	}

	$names = array_keys( $backup );
	$in    = implode( ',', array_fill( 0, count( $names ), '%s' ) );

	// phpcs:disable WordPress.DB.DirectDatabaseQuery, WordPress.DB.PreparedSQLPlaceholders, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
	$current = $wpdb-&gt;get_results(
		$wpdb-&gt;prepare( "SELECT option_name, autoload FROM {$wpdb-&gt;options} WHERE option_name IN ($in)", $names ),
		OBJECT_K
	);
	// phpcs:enable

	echo '&lt;form method="post"&gt;';
	wp_nonce_field( 'ayudawp_desactivar_autoload' );
	echo '&lt;input type="hidden" name="ayudawp_desactivar_autoload_action" value="restore"&gt;';
	echo '&lt;table class="widefat striped"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;' . esc_html__( 'Opción', 'ayudawp-desactivar-autoload' ) . '&lt;/th&gt;&lt;th&gt;' . esc_html__( 'Antes', 'ayudawp-desactivar-autoload' ) . '&lt;/th&gt;&lt;th&gt;' . esc_html__( 'Ahora', 'ayudawp-desactivar-autoload' ) . '&lt;/th&gt;&lt;th&gt;' . esc_html__( 'Aviso', 'ayudawp-desactivar-autoload' ) . '&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';

	foreach ( $backup as $name =&gt; $original ) {
		$now  = isset( $current[ $name ] ) ? $current[ $name ]-&gt;autoload : '';
		$note = '';

		if ( '' === $now ) {
			$note = __( 'Ya no existe', 'ayudawp-desactivar-autoload' );
		} elseif ( in_array( $now, $autoload, true ) ) {
			$note = __( 'Ha vuelto a cargarse automáticamente', 'ayudawp-desactivar-autoload' );
		}

		printf(
			'&lt;tr&gt;&lt;td&gt;&lt;input type="checkbox" name="ayudawp_desactivar_autoload_options[]" value="%1$s"&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;%2$s&lt;/code&gt;&lt;/td&gt;&lt;td&gt;%3$s&lt;/td&gt;&lt;td&gt;%4$s&lt;/td&gt;&lt;td&gt;%5$s&lt;/td&gt;&lt;/tr&gt;',
			esc_attr( $name ),
			esc_html( $name ),
			esc_html( $original ),
			esc_html( $now ),
			esc_html( $note )
		);
	}

	echo '&lt;/tbody&gt;&lt;/table&gt;';
	submit_button( __( 'Deshacer los cambios de las seleccionadas', 'ayudawp-desactivar-autoload' ), 'secondary' );
	echo '&lt;/form&gt;&lt;/div&gt;';
}</pre>
<p>Una vez activado lo tienes en «<strong>Herramientas &gt; Desactivar autoload</strong>». Lo primero que te pide es descargar la copia de la base de datos, y cuando la tienes guardada, marcas las opciones que sabes de quién son, haces clic en «<strong>Desactivar autoload de las seleccionadas</strong>» y listo.</p>
<p><a href="https://ayudawp.com/?attachment_id=160450" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160450 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/plugin-desactivar-autoload-WordPress-1200x1505.jpg" alt="" width="1200" height="1505" srcset="https://ayudawp.com/wp-content/uploads/2026/10/plugin-desactivar-autoload-WordPress-1200x1505.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/plugin-desactivar-autoload-WordPress-768x963.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/plugin-desactivar-autoload-WordPress-1225x1536.jpg 1225w, https://ayudawp.com/wp-content/uploads/2026/10/plugin-desactivar-autoload-WordPress-1633x2048.jpg 1633w, https://ayudawp.com/wp-content/uploads/2026/10/plugin-desactivar-autoload-WordPress.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Un aviso importante, <strong>al borrar el plugin se borra también la copia de los valores originales</strong>, y los cambios que hayas hecho se quedan como están. Si quieres deshacer algo, hazlo antes de borrarlo. El archivo <code>.sql</code> que descargaste, en cambio, sigue en tu ordenador, y es tu red si algo sale mal.</p>
<blockquote><p>Truco: Si no te apañas con montar el plugin <a href="https://ayudawp.com/wp-content/uploads/2026/10/ayudawp-desactivar-autoload.zip" rel="nofollow">aquí te lo dejo ya en un zip</a> listo para descarga, para que solo tengas que subirlo como expliqué arriba.</p></blockquote>
<h2>Comprueba que no hayas empeorado nada</h2>
<p>Desactivar el <code>autoload</code> de una opción que en realidad se usa en todas las páginas no rompe nada, pero te sale el tiro por la culata, porque cambias una opción dentro de la carga común por una consulta extra en cada visita. Así que toca comprobarlo.</p>
<p>La forma más fácil es con <a href="https://ayudawp.com/query-monitor/" target="_blank" rel="noopener">Query Monitor</a>. Navega por la parte pública de tu web, abre el panel de consultas y filtra por la función que las hace, <code>get_option()</code>. Verás consultas sueltas como esta:</p>
<pre>SELECT option_value FROM wp_options WHERE option_name = 'opcion_1' LIMIT 1</pre>
<p>Si una de las opciones que has cambiado aparece así en todas las páginas, devuélvele el <code>autoload</code>, que ahí sí pintaba algo.</p>
<p>Deja pasar también unos días y mira si algún plugin ha vuelto a activar el <code>autoload</code> por su cuenta. Con el plugin de usar y tirar lo ves en la tabla de opciones cambiadas, y con SQL así:</p>
<pre>SELECT c.option_name, c.autoload AS antes, o.autoload AS ahora
FROM wp_autoload_copia c
JOIN wp_options o ON o.option_name = c.option_name
WHERE o.autoload IN ('yes', 'on', 'auto-on', 'auto');</pre>
<p>Si alguna vuelve a estar cargada automáticamente, ese plugin la guarda forzando el <code>autoload</code> cada vez que la actualiza, y no merece la pena pelearse con él.</p>
<p>Y por último, vuelve a «Herramientas &gt; Salud del sitio» para ver cómo ha quedado.</p>
<h2>¿Se pueden desactivar opciones en autoload con plugins?</h2>
<p>Si prefieres un plugin de los que hay disponibles te cuento cómo lo hacen los tres que te vas a encontrar, porque los he revisado y probado, y no todos hacen lo mismo aunque lo parezca. Los criterios son los de todo el artículo, que sea reversible, que vacíe la caché de objetos al cambiar el <code>autoload</code> y que no te deje tocar las opciones del núcleo.</p>
<p>Antes de nada un aviso que me sale de la experiencia, y es que <strong>ningún plugin sabe con garantías de quién es cada opción</strong>. Tengo la versión Premium de Advanced Database Cleaner pagada desde hace años, que es prácticamente un estándar, y no la uso para esto, porque como todos los de su estilo confunde opciones huérfanas con opciones del núcleo, o del tema con las de un plugin, y cosas así.</p>
<p><strong>La regla del 100% sigue en pie</strong> uses lo que uses, no toques nada que no sepas EXACTAMENTE de qué es.</p>
<h3>Advanced Database Cleaner</h3>
<p><a href="https://wordpress.org/plugins/advanced-database-cleaner/" target="_blank" rel="nofollow noopener">Advanced Database Cleaner</a> es el que mejor resuelve lo del <code>autoload</code>. Cambia el valor con los actuales <code>on</code> y <code>off</code>, vacía la caché de opciones justo después y, por defecto, no te deja cambiar el <code>autoload</code> de las opciones del núcleo. Te enseña además el tamaño total con el mismo umbral que Salud del sitio, y volver atrás es cuestión de un clic.</p>
<p>Las pegas son que no sabe si una opción se usa o no (igual que las consultas SQL), y que es un plugin enorme para lo que necesitas aquí. Mi consejo es instalarlo, hacer el cambio y desinstalarlo.</p>
<h3>AAA Option Optimizer</h3>
<p><a href="https://wordpress.org/plugins/aaa-option-optimizer/" target="_blank" rel="nofollow noopener">AAA Option Optimizer</a> es el único que mide qué opciones se usan de verdad mientras navegas por la web, y como detector no tiene rival, por eso <a href="https://ayudawp.com/optimizar-autoload-opciones-base-datos/" target="_blank" rel="ugc noopener">te lo recomendé en su día</a>, y lo sigo haciendo (para eso). Como herramienta para aplicar los cambios ya no es tan majete.</p>
<p>Para cambiar el <code>autoload</code> <strong>borra la opción y la vuelve a crear</strong>, en lugar de cambiar solo el campo <code>autoload</code>, y eso tiene consecuencias. Se disparan las acciones de borrado de opciones, a las que algunos plugins reaccionan, y si la creación falla después del borrado, la opción se queda borrada. Tampoco he encontrado en su código ningún bloqueo para las opciones del núcleo.</p>
<p>Y hay un botón que yo no pulsaría, el de crear con valor <code>false</code> las opciones que se piden y no existen. Sin caché de objetos persistente no te ahorra ni una consulta, y además cambia lo que recibe el plugin que la pide, que pasa a encontrarse un valor vacío en lugar del valor por defecto que esperaba.</p>
<p>Así que úsalo para lo que es bueno. Déjalo unos días, apunta lo que aparece en <strong>No utilizada pero cargada automáticamente</strong> y haz los cambios con el método manual, con el plugin de usar y tirar o con Advanced Database Cleaner.</p>
<h3>Autoload Optimizer</h3>
<p><a href="https://wordpress.org/plugins/autoload-optimizer/" target="_blank" rel="nofollow noopener">Autoload Optimizer</a> guarda la lista de opciones que ha desactivado para poder revertirlas, y eso está bien, pero no lo recomendaría. Cambia el <code>autoload</code> con los valores antiguos, <strong>no vacía la caché de objetos</strong> (con Redis o Memcached no verás el cambio hasta que alguien la vacíe) y no protege las opciones del núcleo.</p>
<p>Tiene además un botón que pasa a <code>no</code> de golpe todos los transitorios cargados automáticamente, algo inofensivo en sí mismo pero que no te deja revisar qué estás cambiando.</p>
<h2>¿No las puedo borrar directamente y ya?</h2>
<p>Borrar una opción solo tiene sentido si se cumplen dos cosas a la vez.</p>
<ol>
<li>Sabes al 100% que es de algo que ya no está instalado.</li>
<li>Lleva semanas con el <code>autoload</code> desactivado sin que nada haya dejado de funcionar.</li>
</ol>
<p>Si se cumplen estas dos reglas haz una copia de seguridad de la base de datos (en serio, son unos segundos) y borra las que sobren. Tienes más detalles sobre esto en mi artículo sobre <a href="https://ayudawp.com/como-limpiar-la-tabla-wp_options/" target="_blank" rel="ugc noopener">cómo limpiar la tabla wp_options</a>. Si no cumples las dos condiciones las opciones se quedan, en <code>off</code>, que ni molestan ni piden pan.</p>
<h2>Extra: WordPress multisitio</h2>
<p>En una red multisitio cada sitio tiene su propia tabla de opciones (<code>wp_options</code> para el principal, <code>wp_2_options</code>, <code>wp_3_options</code> y así sucesivamente), y cada una se mide por separado. <strong>El aviso de salud del sitio es de cada sitio, no de la red</strong>.</p>
<p>Para ver qué tablas de opciones tienes:</p>
<pre>SELECT table_name
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name LIKE 'wp\_%options';</pre>
<p>Después repites el diagnóstico y la prueba reversible cambiando <code>wp_options</code> por la tabla de cada sitio, y si usas la tabla de copia, crea una por sitio para no mezclar (<code>wp_2_autoload_copia</code>, por ejemplo).</p>
<p>El plugin de usar y tirar funciona igual en cada sitio. Actívalo en el sitio que quieras revisar o actívalo en toda la red, y lo tendrás en <strong>Herramientas</strong> de cada uno, trabajando solo sobre la tabla de ese sitio.</p>
<p>Las opciones de la red, las de la tabla <code>wp_sitemeta</code>, no tienen columna de <code>autoload</code>, así que no entran en todo esto.</p>
<h2>¿Me resumes qué hacer con el aviso de error de opciones cargadas automáticamente?</h2>
<p>Esto es un resumen, pero no explica todo lo que tienes que leer (obligatoriamente) ahí arriba, que es gratis e imprescindible, y luego todo son lloros. Dicho esto, este sería el orden que yo seguiría:</p>
<ol>
<li>Mira el tamaño. Si estás cerca del umbral y la web va bien, no tienes que hacer nada.</li>
<li>Si está muy por encima, ejecuta las consultas de diagnóstico y localiza qué plugin o tema se lleva el grueso.</li>
<li>Pasa a <code>off</code> solo lo que sepas de quién es, guardando antes los valores originales, con SQL o con el plugin de usar y tirar.</li>
<li>Comprueba con Query Monitor que no has añadido consultas en todas las páginas.</li>
<li>Deja pasar unas semanas antes de pensar siquiera en borrar algo, y solo si tienes el 100% de seguridad.</li>
</ol>
<p>Y si lo que crece es un plugin concreto que no para de meter datos en la tabla de opciones, el problema es el plugin, así que plantéate si lo necesitas o si hay alternativas que no lo hagan.</p>
<p>Si te surge alguna duda o te encuentras una opción rara que no sabes de dónde sale, me tienes ahí abajo en los comentarios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/desactivar-autoload/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>77 comprobaciones para limpiar un WordPress infectado, en una hoja de cálculo (descarga gratis)</title>
		<link>https://ayudawp.com/comprobaciones-limpiar-wordpress-infectado/</link>
					<comments>https://ayudawp.com/comprobaciones-limpiar-wordpress-infectado/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Mon, 05 Oct 2026 06:28:41 +0000</pubDate>
				<category><![CDATA[Seguridad WordPress]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[Vigilante]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160328</guid>

					<description><![CDATA[Aquí tienes la hoja de control con la que trabajo yo y te la puedes descargar: 77 comprobaciones repartidas en 8 fases, en una hoja de cálculo que rellenas y que te va diciendo en qué punto estás. Gratis, sin registro y sin dejar el correo…]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Si <strong>te han infectado una web</strong> lo que te va a fallar no es saber qué hacer, que eso está escrito en mil sitios, también en este blog, sino <strong>acordarte de por dónde ibas y qué queda aún por hacer</strong>.</p>



<p class="wp-block-paragraph">Y es que <strong>una limpieza en condiciones son dos o tres días de trabajo, y puede que más</strong>, porque si toca, la de que Google quite el aviso de web peligrosa, y que los antivirus dejen de marcarla como infectada, se cuenta en semanas, y es fácil que se te pase algo.</p>



<p class="wp-block-paragraph">Así que he decidido <strong>compartir la hoja de seguimiento con la que llevo trabajando años y te la puedes descargar para tus cosas</strong>.</p>



<p class="wp-block-paragraph">Son, total nada, solo <strong>77 comprobaciones repartidas en 8 fases, en una hoja de cálculo que rellenas y que te va diciendo en qué punto estás</strong>. </p>



<p class="wp-block-paragraph"><strong>Gratis, sin registro</strong> y sin dejar el correo en ninguna parte, <strong>es una hoja de cálculo, la descargas en tu ordenador</strong> y la usas como y para lo que quieras.</p>



<p class="wp-block-paragraph">No sustituye a una guía de limpieza ni al trabajo que supone, la acompaña, es una ayuda. Ya mismo te cuento qué tiene dentro y, sobre todo, los cuatro errores que podrías cometer si te saltas el orden y lo que te ahorra, que son los típicos fallos bobos que hacen que una limpieza haya que repetirla entera.</p>



<h2 class="wp-block-heading">Esto no es otra guía de limpieza, es para que sepas por dónde vas</h2>



<p class="wp-block-paragraph">La guía completa la tengo publicada desde hace años y la voy actualizando, la tienes en <a href="https://ayudawp.com/limpiar-wordpress-hackeado-infectado/" target="_blank" rel="ugc noopener">cómo limpiar y recuperar un WordPress hackeado o infectado</a>. Ahí está el procedimiento entero, paso por paso.</p>



<p class="wp-block-paragraph">Lo que no cabe en un artículo, por largo que sea, es el seguimiento. <strong>Un tutorial te lo lees de una sentada, pero el trabajo dura días</strong>, y entre medias te llaman por teléfono, cierras el portátil, vuelves al día siguiente y ya no sabes si llegaste a mirar la carpeta <code>mu-plugins</code> o te quedaste en los <code>drop-ins</code>.</p>



<p class="wp-block-paragraph">La guía te explica como se hace, pero necesitas <strong>una lista de tareas para no entregar como limpia una web en la que te dejaste varios pasos sin terminar</strong>.</p>



<p class="wp-block-paragraph">Seguramente hay trabajos en web que no requieran este tipo de seguimiento, yo no los conozco, pero no dudo que tú sepas alguno, pero sí te aseguro que <strong>en seguridad no sobra ningún paso, y también tengo claro que el orden en tareas de limpieza de malware y virus importa y mucho</strong>.</p>



<h2 class="wp-block-heading">Qué tiene dentro la hoja de seguimiento</h2>



<p class="wp-block-paragraph">Son <strong>8 pestañas</strong>, cada una con su función:</p>



<ul class="wp-block-list">
<li><strong>Portada:</strong> escribes tu dominio, tienes los avisos de lo que puede salir mal y un contador de avance por fases que se actualiza solo.</li>



<li><strong>Antes de empezar:</strong> los accesos y la información que conviene tener a mano antes de tocar nada, que si no acabas parando la limpieza a media faena para buscar una contraseña.</li>



<li><strong>Checklist:</strong> las 77 comprobaciones con su estado, su fecha y un hueco para notas.</li>



<li><strong>Diagnóstico:</strong> 27 comprobaciones de las que delatan una infección, cada una con cómo se mira desde fuera sin instalar nada.</li>



<li><strong>Comprobaciones online:</strong> 20 escáneres y servicios públicos, con el enlace de tu dominio si lo añadiste en la portada.</li>



<li><strong>Reputación y retiradas:</strong> dónde se mira cada aviso y, más importante, dónde se pide que te lo quiten.</li>



<li><strong>Patrones de código:</strong> 20 patrones que buscar en los ficheros y qué significa cada uno si aparece.</li>



<li><strong>No volver a pasar:</strong> las diez medidas de después, con el porqué de cada una.</li>
</ul>


<figure data-wp-context='{"galleryId":"6acad76bce55a"}' data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><figure data-wp-context='{"imageId":"6acad76bcfc19"}' data-wp-interactive="core/image" data-wp-key="6acad76bcfc19" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1914" height="2232" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160436" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-0.jpg" alt="" class="wp-image-160436" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-0.jpg 1914w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-0-1200x1399.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-0-767x895.jpg 767w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-0-1317x1536.jpg 1317w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-0-1756x2048.jpg 1756w" sizes="auto, (max-width: 1914px) 100vw, 1914px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bcffef"}' data-wp-interactive="core/image" data-wp-key="6acad76bcffef" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="2123" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160438" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-1.jpg" alt="" class="wp-image-160438" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-1.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-1-768x849.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-1-1199x1326.jpg 1199w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-1-1389x1536.jpg 1389w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-1-1852x2048.jpg 1852w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bd0338"}' data-wp-interactive="core/image" data-wp-key="6acad76bd0338" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="1364" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160434" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-2.jpg" alt="" class="wp-image-160434" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-2.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-2-1199x852.jpg 1199w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-2-767x545.jpg 767w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-2-1536x1091.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bd073c"}' data-wp-interactive="core/image" data-wp-key="6acad76bd073c" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="1476" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160437" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-3.jpg" alt="" class="wp-image-160437" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-3.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-3-767x590.jpg 767w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-3-1199x922.jpg 1199w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-3-1536x1181.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bd0aad"}' data-wp-interactive="core/image" data-wp-key="6acad76bd0aad" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="1425" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160435" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-4.jpg" alt="" class="wp-image-160435" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-4.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-4-1199x890.jpg 1199w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-4-768x570.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-4-1536x1140.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bd0de7"}' data-wp-interactive="core/image" data-wp-key="6acad76bd0de7" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="958" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160439" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-5.jpg" alt="" class="wp-image-160439" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-5.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-5-768x383.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-5-1198x598.jpg 1198w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-5-1536x766.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bd1158"}' data-wp-interactive="core/image" data-wp-key="6acad76bd1158" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="1520" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160441" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-6.jpg" alt="" class="wp-image-160441" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-6.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-6-1200x950.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-6-768x608.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-6-1536x1216.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>


<figure data-wp-context='{"imageId":"6acad76bd14c0"}' data-wp-interactive="core/image" data-wp-key="6acad76bd14c0" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="1050" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="160440" src="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-7.jpg" alt="" class="wp-image-160440" srcset="https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-7.jpg 1920w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-7-1200x656.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-7-768x420.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/checklist-limpieza-wp-ayudawp-xlsx-7-1536x840.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.thisImage.buttonRight" data-wp-style--top="state.thisImage.buttonTop">
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
			</svg>
		</button></figure>
</figure>



<p class="wp-block-paragraph">El detalle que vas a agradecer es el del dominio, <strong>lo escribes una vez en la portada y los enlaces de los escáneres salen construidos con tu web dentro</strong>, así que no tienes que ir copiando y pegando en veinte formularios distintos mientras estás a tope de tareas.</p>



<p class="wp-block-paragraph">Cada comprobación viene marcada con su nivel de riesgo, porque no es lo mismo mirar un archivo que borrarlo, y las que pueden dejarte la web fuera de servicio salen en rojo.</p>



<h2 class="wp-block-heading">Los cuatro errores de orden que te va a evitar</h2>



<p class="wp-block-paragraph">Esto es lo que de verdad separa una limpieza que termina bien de una que hay que repetir, y sobre todo, <strong>la diferencia de entregar una web limpia a una que tirará por tierra tu reputación</strong> como profesional por haberte dejado cosas a medias o sin hacer.</p>



<p class="wp-block-paragraph">No son nunca errores de conocimiento, <strong>son errores de orden</strong>, y nos pasa a todos si no tenemos consistencia en los procesos, o una hoja de seguimiento.</p>



<ol class="wp-block-list">
<li><strong>Pedir la revisión de seguridad a Google con la web aún no limpia del todo:</strong> Es lo primero que hace todo el mundo, porque el aviso rojo de Chrome aprieta, estamos todos deseando que desaparezca, tu cliente el primero. Si la pides antes de tiempo gastas el intento, Google vuelve a mirar, lo vuelve a encontrar y la siguiente revisión tarda más. En la hoja esa comprobación está en la fase 7, la última, y no por capricho. Lo tienes explicado en <a href="https://ayudawp.com/quitar-lista-negra-google/" target="_blank" rel="ugc noopener">cómo quitar una web WordPress de la lista negra de Google</a>.</li>



<li><strong>Pedir la salida de las listas negras de correo con el servidor todavía enviando spam:</strong> Mismo problema que con el punto anterior, pero además generas trabajo improductivo de marketing, con una newsletter que sigue fallando y emails que no llegan a nadie por apresurarte.</li>



<li><strong>Dar el trabajo por terminado el mismo día:</strong> Una web limpia el martes y reinfectada el jueves no estaba limpia, es que quedaba una puerta trasera o el agujero por el que entraron sigue abierto. Por eso hay una comprobación que consiste literalmente en esperar 72 horas y volver a mirar. En mi experiencia es casi el punto más importante de todo el listado, y además tiene connotaciones legales (lo detallo más abajo).</li>



<li><strong>Dejarte el modo mantenimiento puesto:</strong> Quitas la página de aviso, te olvidas de la regla del <code>.htaccess</code> y tu portada sigue devolviendo un 503 a Google durante una semana. La web está perfecta pero perdiendo posicionamiento sin enterarte. En serio, pasa.</li>
</ol>



<h2 class="wp-block-heading">Si tu web guarda datos personales tienes 72 horas</h2>



<p class="wp-block-paragraph">Esta parte se salta casi siempre y es la única que tiene plazo legal. Si en la web hay clientes, pedidos, suscriptores o formularios guardados, y alguien ha podido acceder a eso, <strong>hay 72 horas para notificar la brecha a la <a href="https://www.aepd.es/" target="_blank" rel="nofollow noopener">Agencia Española de Protección de Datos</a>, contadas desde que te enteras</strong>, no desde que terminas de limpiar.</p>



<p class="wp-block-paragraph">Que una web sea pequeña, o tuya, no quita la obligación, porque el responsable del tratamiento ahora mismo eres tú. Eso sí, tampoco te vayas al otro extremo, porque en la mayoría de webs pequeñas la cosa se resuelve valorando el alcance y documentando la valoración, se notifique o no. Lo que no vale es no haber pensado en ello.</p>



<p class="wp-block-paragraph">En la hoja son tres comprobaciones y están en la fase 0, antes de tocar un solo fichero, precisamente porque el plazo corre mientras limpias.</p>



<h2 class="wp-block-heading">La descarga y los primeros cinco minutos</h2>



<p class="wp-block-paragraph">Aquí la tienes para descargarla gratis, en formato <code>.xlsx</code>, que se abre en Excel, en Numbers, en LibreOffice y en Google Sheets:</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://docs.google.com/spreadsheets/d/e/2PACX-1vRaKuBNssXc6gjXVv2IIDC5cr9PDuexryb-tM__3hMb8R-HvKns7B65FOJ2dQf9MQ/pub?output=xlsx" rel="nofollow">Descargar hoja de seguimiento (xlsx)</a></div>
</div>



<p class="wp-block-paragraph">Tres cosas para empezar con buen pie:</p>



<ul class="wp-block-list">
<li>Escribe tu dominio arriba del todo de la hoja de portada, sin www y sin https, que de ahí salen todos los enlaces de otras hojas.</li>



<li>Filtra la columna «Aplica si» y marca «No aplica» en lo que no sea tu caso, que si no tienes tienda te sobran unas cuantas comprobaciones.</li>



<li>No empieces la fase 3 sin haber terminado la copia de la fase 1. Esa copia es tu red de seguridad y es la que te permite equivocarte.</li>
</ul>



<p class="wp-block-paragraph">Y guárdala aunque no la necesites hoy. El día que la necesites vas a tener otras cosas en la cabeza.</p>



<h2 class="wp-block-heading">Hasta dónde llega la hoja de seguimiento</h2>



<p class="wp-block-paragraph">Para que no haya malentendidos, porque esto no es un folleto, <strong>la hoja no te encuentra por dónde te entraron a una web, eso lo tienes que averiguar tú</strong>, y sin saber por dónde entraron limpiar sirve solo de momento, porque volverán por el mismo sitio.</p>



<p class="wp-block-paragraph">Hay tres situaciones en las que yo no seguiría sin ayuda:</p>



<ul class="wp-block-list">
<li>Si es una tienda y ha podido haber captura de datos de pago.</li>



<li>Si el hosting ya te ha suspendido la cuenta.</li>



<li>Si vas por la segunda reinfección. Ahí ya no hablamos de seguir una lista, hablamos de un trabajo de varios días con herramientas que no se improvisan y con un informe detrás.</li>
</ul>



<p class="wp-block-paragraph">Si estás en ese punto <a href="https://servicios.ayudawp.com/producto/wordpress-hackeado/" target="_blank" rel="noopener nofollow">déjaselo a otros</a> y tú sigue a tus tareas. Pero si prefieres intentarlo tú para eso tienes la hoja de seguimiento ¡a por ello!</p>



<h2 class="wp-block-heading">Para que no haya una segunda vez</h2>



<p class="wp-block-paragraph">La última pestaña son diez medidas, pero si solo te llevas cuatro que sean estas: doble factor para todos los administradores, nada de plugins ni temas <a href="https://ayudawp.com/plugins-temas-nulled-gpl/" data-type="post" data-id="123154" target="_blank" rel="noopener">nulled</a>, copias automáticas que hayas restaurado alguna vez de verdad, y vigilancia de cambios en archivos para enterarte tú antes que Google.</p>



<p class="wp-block-paragraph">Para lo último tienes <a href="https://vigilante.works/es/" target="_blank" rel="noopener">Vigilante</a>, que ya sabes que es un plugin gratuito y hace justo eso, avisarte cuando un fichero cambia y cuando aparece una vulnerabilidad en algo que tienes instalado. Si prefieres no volver a pensar en esto nunca más, pues para eso está el <a href="https://mantenimiento.ayudawp.com" target="_blank" rel="ugc noopener">servicio de mantenimiento</a>, que es literalmente esto mismo hecho cada mes por alguien que no se olvida.</p>



<p class="wp-block-paragraph">Y si ahora mismo solo quieres saber cómo está tu web, pásala por el <a href="https://herramientas.ayudawp.com/security-check/" target="_blank" rel="ugc noopener">análisis de seguridad</a>, que tarda un minuto y no instala nada.</p>



<p class="wp-block-paragraph">Si quieres profundizar en la parte de prevención tienes <a href="https://ayudawp.com/proteger-wordpress-contra-malware/" target="_blank" rel="ugc noopener">15 maneras de proteger WordPress contra el malware</a>, y si lo que te está pasando es que Google te devuelve resultados raros en japonés o de venta de relojes, eso tiene nombre y lo cuento en <a href="https://ayudawp.com/spam-seo-injection/" target="_blank" rel="ugc noopener">este otro artículo sobre spam SEO inyectado</a>.</p>



<p class="wp-block-paragraph">Úsala, rómpela y dime qué te ha faltado. La hoja la genero desde mi propio catálogo de comprobaciones, así que <strong>añadir lo que me digáis y sacar una versión nueva me cuesta cinco minutos</strong>. Me tienes ahí abajo, en la sección de comentarios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/comprobaciones-limpiar-wordpress-infectado/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>La pestaña nueva de PageSpeed Insights de «Navegación agéntica» audita justo lo que Google lleva año y medio diciendo que no sirve para nada</title>
		<link>https://ayudawp.com/navegacion-agentica-pagespeed/</link>
					<comments>https://ayudawp.com/navegacion-agentica-pagespeed/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 06:28:39 +0000</pubDate>
				<category><![CDATA[SEO / AEO / GEO / AIO]]></category>
		<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[WPO - Optimizar WordPress]]></category>
		<category><![CDATA[DietPress]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[PageSpeed]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[VigIA]]></category>
		<category><![CDATA[Visibility]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160348</guid>

					<description><![CDATA[Si has analizado tu web en PageSpeed Insights recientemente habrás visto una pestaña que antes no estaba: Navegación agéntica, que no puntúa de 0 a 100 ni tiene nada que ver con tu posición en Google. ¿Sirve de algo?]]></description>
										<content:encoded><![CDATA[<p>Si has metido tu web en <strong>PageSpeed Insights</strong> en los últimos meses, te habrá salido una pestaña que antes no estaba: <strong>Navegación agéntica</strong>, que no puntúa de 0 a 100 ni tiene nada que ver con tu posición en Google, así que la mayoría la mira con cara rara y sigue a lo suyo.</p>
<p>Pues bien, yo creo que <strong>merece la pena pararse</strong>, porque una de las tres cosas que audita es justo el archivo que el propio equipo de Search de Google lleva año y medio diciendo, sin cortarse un pelo, que no sirve para nada.</p>
<p>Vamos a ver qué mide esa pestaña de verdad, por qué <strong>Google se contradice a sí mismo</strong> (más o menos), y <strong>qué necesita tu WordPress para aprobar esa puntuación <em>agéntica</em></strong>, y ver qué hacen los plugins, que para eso están.</p>
<h2>Qué es eso de «navegación agéntica» que ahora mide Google</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160404 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/google-project-mariner-1200x689.jpg" alt="" width="1200" height="689" srcset="https://ayudawp.com/wp-content/uploads/2026/10/google-project-mariner-1200x689.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/google-project-mariner-768x441.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/google-project-mariner-1536x882.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/google-project-mariner.jpg 1568w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>La categoría llamada <a href="https://developer.chrome.com/docs/lighthouse/agentic-browsing/scoring?hl=es-419" target="_blank" rel="nofollow noopener">navegación agéntica o <em>agentic browsing</em></a> nació en Lighthouse, la herramienta de auditoría de Chrome, como algo experimental. Dejó de serlo en mayo de 2026, con la versión 13.3, cuando pasó a la configuración por defecto. Semanas después, PageSpeed Insights la heredó, así que <strong>ahora mismo cualquiera que meta una URL ahí la ve</strong>, sin haber activado nada.</p>
<p><strong>Mide si un agente de inteligencia artificial que actúa en tu nombre puede entender tu web sin perderse.</strong> Es algo así como el <a href="https://labs.google.com/mariner/landing" target="_blank" rel="nofollow noopener">Project Mariner</a> de Google o cualquier asistente que compare precios, rellene un formulario o resuma una página por ti dentro de una sesión de navegador. No es SEO, no es una nota de posicionamiento, <strong>es una comprobación de si el agente se va a hacer un lío con tu HTML</strong>.</p>
<p>Y aquí ya hay algo que llama la atención, porque no hay ni siquera una media, solo un ratio de aprobados (algo como 2 de 3). La propia documentación de Chrome lo explica como que los estándares para este tipo de navegación todavía se están formando, así que <strong>de momento cuentan cuántas comprobaciones apruebas y punto</strong>, sin pretender siquiera que eso sea algo parecido a una nota fiable.</p>
<h2>Las tres cosas que mira (nada nuevo bajo el sol)</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160405 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/10/pagespeed-insights-navegacion-agentica-1200x708.jpg" alt="" width="1200" height="708" srcset="https://ayudawp.com/wp-content/uploads/2026/10/pagespeed-insights-navegacion-agentica-1200x708.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/10/pagespeed-insights-navegacion-agentica-768x453.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/10/pagespeed-insights-navegacion-agentica-1536x906.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/10/pagespeed-insights-navegacion-agentica.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Por defecto son tres, aunque hay una cuarta familia de comprobaciones, las de WebMCP, que dejo para el final porque no le va a tocar a casi nadie.</p>
<ul>
<li><strong>El árbol de accesibilidad:</strong> Lighthouse no inventa nada nuevo aquí: filtra un subconjunto de las auditorías de accesibilidad que ya existían de toda la vida (nombres programáticos en los elementos interactivos, integridad del árbol de roles, visibilidad de lo que es clicable), porque un agente lee la misma estructura que usa un lector de pantalla. Traducción: si tu web ya saca buena nota en la categoría clásica de Accesibilidad de Lighthouse, lo más probable es que esto ya lo apruebes sin tocar nada.</li>
<li><strong>La estabilidad del diseño:</strong> Es el CLS (<em>Cumulative Layout Shift</em>, la métrica que mide los saltos de maquetación mientras carga la página) con el mismo umbral de siempre, el de Core Web Vitals desde hace años. Aquí no hay ni una coma de novedad técnica, solo lo han metido bajo otra etiqueta.</li>
<li><strong>El archivo llms.txt:</strong> Raro ¿verdad?. La comprobación es generosa porque si el archivo no existe, ni siquiera te penaliza, lo marca como «no aplicable». Si existe pero el servidor da error al servirlo, ahí sí da fallo. El detalle es que el fallo típico no suele ser «no tener el archivo», sino tenerlo mal formateado, o sea, enlaces sueltos en vez de la sintaxis Markdown <code>[nombre](url)</code> que exige la especificación de <a href="https://llmstxt.org/" target="_blank" rel="nofollow noopener">llmstxt.org</a>. Un detalle tonto que puede hacer suspender aunque el archivo esté ahí desde hace meses. Esto pasa mucho, todo hay que decirlo, porque igual te crees que el generador llms.txt de Yoast y otros tantos que hay por ahí son válidos, pero no, <strong>ahora mismo solo <a href="https://vigia.dev/" target="_blank" rel="noopener">VigIA</a> y <a href="https://vigilante.works/" target="_blank" rel="noopener">Vigilante</a> entregan llms.txt con especificación estándar y formatos válidos v2</strong>.</li>
</ul>
<p>Y sobre <strong>WebMCP</strong>, la parte que deja registrar formularios y botones (añadir al carrito, reservar, enviar) como herramientas que un agente puede invocar directamente, no forma parte de las tres comprobaciones por defecto, hace falta apuntarse a un <em>origin trial</em> de Chrome para que se audite.</p>
<p>Es un estándar que existe, con el W3C Web Machine Learning Community Group detrás y Microsoft co-desarrollándolo, no el <em>DevTrial</em> roto que parecía hace unos meses, pero para el 99 % de las webs WordPress, sobre todo blogs y sitios editoriales, esto <strong>no sirve aún de nada</strong>.</p>
<p>El único sitio donde empieza a tener sentido a medio plazo es una tienda WooCommerce, con el carrito y el pago como acciones invocables. Pero no es algo ni para hoy ni para el próximo trimestre, así que lo dejo aquí y sigo.</p>
<h2>¿Google contra Google?</h2>
<p>Aquí viene la parte que más me ha llamado la atención a mí también, porque <strong>el equipo de Search de Google lleva metiendo caña contra el llms.txt desde mediados de 2025</strong>. Gary Illyes llegó a decir en un directo, en un Search Central Live que <strong>Google no da soporte al archivo y no tiene planes de dárselo</strong>.</p>
<p>John Mueller fue todavía más lejos y lo comparó con la vieja meta etiqueta <em>keywords</em>, esa que rellenaba el propio sitio y que por eso mismo no servía de nada, al ser manipulable por principios (por mucho que Google haya vivido de ella durante años).</p>
<p>Y no es solo opinión de sus portavoces, los datos de campo respaldan la postura, eso es cierto. Kai Spriestersbach registró 62.100 peticiones de bots de IA en 90 días sobre un dominio de prueba, y solo 84 tocaron el llms.txt, un 0,1 % del tráfico de rastreo.</p>
<p>Un análisis de SE Ranking sobre 300.000 dominios no encontró correlación ninguna entre tener el archivo y aparecer citado en respuestas de IA. Con esos números entiendo perfectamente que Search diga que no sirve. Yo mismo aún estoy por ver que los rastreadores de IA busquen los llms.txt, es cierto que <strong>empiezo a ver con la analítica de VigIA que los leen, pero no los buscan, los encuentran si lo indicas en el código fuente</strong>.</p>
<p>Pero ahora resulta que el equipo de Chrome, de la misma empresa, te lo audita en una herramienta que lleva el sello de Google en la cabecera. <strong>No es que se estén mintiendo el uno al otro</strong>, seamos justos, hablan de <strong>casos de uso distintos</strong>.</p>
<p><strong>Search piensa en indexación y ranking, Chrome piensa en un agente que opera dentro de una sesión de navegador</strong>, en tu nombre, y para el que un resumen rápido en la raíz del dominio sí ahorra tiempo de rastreo puntual, sea o no el mismo archivo que ignoran los buscadores.</p>
<p>Pero que tenga una explicación de arquitectura no lo salva de ser un desastre de comunicación externa, que es justo lo que me indigna del asunto. Es como el padre que dice una cosa y la madre la contraria, y el crío (el pobre SEO de turno, en este caso) sin saber a quién hacer caso.</p>
<p>Google publica en su propio sitio para desarrolladores <strong>una auditoría que premia justo lo que otro equipo de la misma casa lleva describiendo como inútil</strong>, y eso echa más leña al bucle de desinformación que ya generaba el llms.txt por su cuenta.</p>
<p>Lo que tenemos son herramientas SEO que lo marcan como problema, gente que se pone nerviosa, y la ansiedad alimentando la sensación de que hace falta cuando los datos dicen lo contrario. Esto solo sería un debate friki si no fuese porque hay millones de negocios a los que la aparición de las IAs generativas les han hecho mucho daño, y <strong>todos estamos queriendo saber cómo sobrevivir en este nuevo escenario, y esto no ayuda, solo confunde</strong>.</p>
<h2>¿Hago algo en mi WordPress?</h2>
<p>Vamos al grano, que para eso estamos aquí, yo no sé si esto al final irá a algún lado pero ya sabes que lo intento, y lo comparto con vosotros. Sin ir más lejos, con los plugins que he ido creando para ayudarme/nos a entender y seguir peleando por existir en este mundo extraño, el reparto real de estas tres comprobaciones de la navegación agéntica que mide PageSpeed queda así:</p>
<ul>
<li><strong>Archivo llms.txt:</strong> Visibility genera llms.txt y llms-full.txt, sirve Markdown para agentes y edita el robots.txt con bloqueo de rastreadores de IA. Si en vez de Visibility tienes solo VigIA, también lo genera él, y si tienes los dos a la vez, VigIA se aparta y deja que emita Visibility, para no duplicar el archivo entre dos plugins tuyos. En mi propia web de mantenimiento <a href="https://herramientas.ayudawp.com/ai-visibility/" target="_blank" rel="noopener">la última auditoría que le pasé de visibilidad en IA</a> confirma que hay una sola fuente de esquemas activa, el grafo de Visibility, un plan perfecto.</li>
<li><strong>Estabilidad del diseño:</strong> DietPress reduce los saltos de maquetación con dimensiones automáticas de imagen y carga diferida correcta, que es justo lo que evita el problema de raíz. No existe ningún plugin de la familia que te enseñe tu CLS en una pantalla al instante y gratis; para eso está PageSpeed Insights directamente, que es gratuito y de Google. Si quieres algo más completo, con el CLS real medido vía API de PSI junto a otras 90 y pico comprobaciones técnicas, tengo un servicio de auditoría bajo petición en <a href="https://herramientas.ayudawp.com/auditoria-seo/#sea-solicitar" target="_blank" rel="noopener ugc">la herramienta de auditoría SEO</a>, pero ojo, no es una herramienta de autoservicio instantánea como las otras que menciono aquí, es una auditoría que se solicita y que llega en forma de informe completo. En mi web, con DietPress activo, el CLS de laboratorio salió en 0,02, muy por debajo del umbral de necesidad de mejora.</li>
<li><strong>Árbol de accesibilidad:</strong> La comprobación de Lighthouse es un subconjunto pequeño de auditorías de accesibilidad. El <a href="https://herramientas.ayudawp.com/accesibilidad/" target="_blank" rel="noopener ugc">analizador de accesibilidad</a> que tengo publicado va bastante más allá, con WCAG 2.1 AA completo, con más de 22 criterios en seis categorías, comprobaciones específicas de WordPress (tema <em>accessibility-ready</em>, constructores visuales) y hasta la parte legal española, la Ley 11/2023 y el RD 1112/2018. Quien pasa esa herramienta aprueba de sobra, y la comprobación de Lighthouse es algo casi de broma.</li>
</ul>
<p>¿Quieres probar con otros plugins y soluciones, incluso de pago?, tú verás, yo creé estas herramientas porque me empezaba a mosquear tanta repentina herramienta de visibilidad IA premium para cosas que están aún en barbecho. Yo te las ofrezco gratis, pero vale, entiendo que hay gente que no se fía de lo gratis, paga por ahí y luego me cuentas.</p>
<h2>¿Tienes que hacer algo ya mismo?</h2>
<p>Con todo lo anterior, el plan de choque es breve y gratis:</p>
<ol>
<li>Si aún no tienes <a href="https://es.wordpress.org/plugins/native-aeo-pack/" target="_blank" rel="noopener">Visibility</a> ni <a href="https://es.wordpress.org/plugins/vigia/" target="_blank" rel="noopener">VigIA</a> (mal) instala uno de los dos y revisa el modo del llms.txt, prueba a ver si entrega lo correcto, y sino ponlo en manual y elige tú las páginas, no dejes que lo decida un recuento automático de enlaces.</li>
<li>Si te preocupa el CLS, comprueba que las imágenes tienen carga diferida y dimensiones declaradas (<a href="https://dietpress.dev/es/" target="_blank" rel="noopener">DietPress</a> lo hace por defecto) y mira el resultado real en PageSpeed Insights, no necesitas nada más para verlo.</li>
<li>Pasa tu web por <a href="https://herramientas.ayudawp.com/accesibilidad/" target="_blank" rel="noopener">el analizador de accesibilidad</a> y corrige lo que salga en rojo antes que lo amarillo.</li>
<li>De WebMCP olvídate por ahora, salvo que tengas una tienda WooCommerce y quieras ir por delante de algo que todavía está en pañales y nadie mira ni usa.</li>
</ol>
<p>Lo que no haría es perseguir esta pestaña como si fuera el nuevo indicador que decide tu vida en Google, porque no lo es y los propios datos de Search lo confirman. Pero tampoco la ignoraría del todo, porque ya <strong>es visible por defecto para cualquiera que abra PageSpeed Insights, y dentro de poco te va a tocar explicársela a algún cliente</strong> con cara de susto. Mejor tenerla estudiada antes de que llegue esa pregunta.</p>
<p>¿Tú qué opinas, te parece que Google debería unificar el mensaje entre sus equipos antes de sacar auditorías así, o te da igual mientras tu web quede bien parada? Te leo y tal, me encanta escuchar y aprender, y yo en esto también soy nuevo, como todos, pero lo intento.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/navegacion-agentica-pagespeed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configurar envíos en WooCommerce: zonas, clases, tarifas, recogida local, todo bien explicado</title>
		<link>https://ayudawp.com/configurar-envios-woocommerce/</link>
					<comments>https://ayudawp.com/configurar-envios-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Wed, 30 Sep 2026 06:28:00 +0000</pubDate>
				<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160070</guid>

					<description><![CDATA[Configurar los envíos en WooCommerce es lo peor de lo peor, así que te lo voy a explicar facilito y paso a paso.]]></description>
										<content:encoded><![CDATA[<p>Los <strong>envíos de WooCommerce</strong> tienen una configuración que parece sencilla hasta que la tocas, y entonces descubres que <strong>el orden en el que haces las cosas importa</strong>, que hay pantallas que dependen de otras que están en sitios distintos y que hay <strong>ajustes que ni siquiera puedes activar sin saber por qué</strong>.</p>
<p>Aquí tienes qué hace cada parte, <strong>en qué orden conviene configurarlas y dónde está el fallo cuando el cliente no ve las tarifas que le tocan</strong>.</p>
<p>La base del tutorial cubre lo que necesita cualquier tienda que envíe dentro de España, y al final hay un bloque de casos especiales por si envías a Canarias o fuera de la Unión Europea.</p>
<h2>Antes de nada, decide adónde vas a enviar</h2>
<p>Hay un ajuste previo que condiciona todo lo demás y que está en otra pantalla, en «<strong>WooCommerce &gt; Ajustes &gt; General</strong>». Ahí tienes el desplegable de «<strong>Ubicación(es) de envío</strong>», con opciones para enviar a todos los países a los que vendes, solo a algunos que elijas, o directamente desactivar los envíos.</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160254 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-ubicaciones-envio-1200x398.jpg" alt="" width="1200" height="398" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-ubicaciones-envio-1200x398.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-ubicaciones-envio-768x255.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-ubicaciones-envio.jpg 1344w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Esa última posibilidad es más útil de lo que parece. Si tu negocio es una tienda física que solo hace recogida en el local, o si vendes exclusivamente productos digitales, <strong>desactivar los envíos te ahorra montar zonas que no vas a usar</strong> y le quita al cliente campos de dirección que no pintan nada.</p>
<h3>Y ese otro ajuste del que usted me habla, que es el que más guerra da</h3>
<p>En esa misma pantalla, un poco más abajo, tienes «<strong>Ubicación del cliente por defecto</strong>», y es el que más incidencias raras provoca en los envíos precisamente porque casi nadie lo relaciona con ellos.</p>
<p>El motivo es sencillo. Para saber qué zona de envío le toca a alguien, WooCommerce necesita saber dónde está ese alguien, pero mientras el visitante curiosea productos o acaba de llegar al carrito todavía no ha escrito ninguna dirección. Así que tiene que partir de una suposición, y <strong>esa suposición se decide aquí, no en los ajustes de envío</strong>.</p>
<p><strong><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160255 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerde-ajuste-ubicacion-defecto-cliente-1200x368.jpg" alt="" width="1200" height="368" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerde-ajuste-ubicacion-defecto-cliente-1200x368.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerde-ajuste-ubicacion-defecto-cliente-768x236.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerde-ajuste-ubicacion-defecto-cliente.jpg 1316w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></strong></p>
<p>Las cuatro opciones y lo que provoca cada una:</p>
<ul>
<li><strong>Sin ubicación por defecto</strong>: no supone nada, con lo que hasta que el cliente no escriba una dirección no hay zona que valga y no se le puede calcular ningún envío.</li>
<li><strong>País/region de la tienda</strong>: da por hecho que está donde estás tú. Es la que menos sorpresas da si vendes sobre todo en España, porque desde el primer momento hay una zona con la que trabajar.</li>
<li><strong>Geolocalizar</strong>: detecta el país por la IP del visitante. Suena estupendo hasta que te acuerdas de que tienes caché de página, porque el servidor puede estar sirviendo la misma página guardada a todo el mundo con la zona que le tocó al primero que pasó por ahí.</li>
<li><strong>Geolocalizar (compatible con de caché de página)</strong>: lo mismo pero resolviendo la detección por otra vía para que la caché no se la coma. Si quieres geolocalizar esta es la que tienes que usar, porque caché vas a tener seguro.</li>
</ul>
<p>Para una tienda española que vende sobre todo aquí, la opción cómoda es <strong>País/región de la tienda</strong>. Y si vendes a varios países con tarifas muy distintas, geolocalizar compatible con caché, nunca la otra.</p>
<p>El síntoma clásico de tener esto mal puesto es <strong>que el cliente vea un coste de envío en el carrito y otro distinto al finalizar la compra</strong>. Lo que ha pasado es que la zona que WooCommerce estaba suponiendo no era la que le correspondía de verdad, y al escribir su dirección se recalculó todo.</p>
<p>Hay un detalle más que explica otra confusión habitual, y es que si tienes métodos de envío metidos en la zona de resto del mundo (la de más abajo, que te cuento en un momento), el cliente verá esos métodos nada más llegar en vez del aviso de que introduzca su dirección. No está roto, es que ha encajado en esa zona por descarte.</p>
<p><strong>Este mismo ajuste condiciona también cómo se calculan los impuestos</strong>, y ahí tiene su propia ración de rarezas que te cuento en la guía de impuestos en WooCommerce.</p>
<h2>Zonas, regiones y métodos, las tres piezas del puzle</h2>
<p>Toda la configuración de envíos de WooCommerce se apoya en tres conceptos que encajan uno dentro de otro, y entenderlos bien de entrada te ahorra la mitad de los problemas.</p>
<p>Una <strong>zona de envío</strong> es un área geográfica. Esa área se define con una o varias <strong>regiones</strong>, que pueden ser un continente, un país, una provincia o una lista de códigos postales, y dentro de cada zona metes los <strong>métodos de envío</strong>, que son las opciones que el cliente verá y con las que se le cobrará.</p>
<p>La regla que hay que tener clara desde el principio, porque explica muchos comportamientos raros, es que <strong>cada cliente encaja en una sola zona, la primera que coincida mirando la lista de arriba abajo</strong>. WooCommerce no acumula zonas ni las suma, encuentra la primera que le vale y deja de buscar.</p>
<p><a href="https://ayudawp.com/?attachment_id=160256" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160256 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-zonas-envio-1200x781.jpg" alt="" width="1200" height="781" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-zonas-envio-1200x781.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-zonas-envio-768x500.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-zonas-envio-1536x1000.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-zonas-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Las zonas se crean en «<strong>WooCommerce &gt; Ajustes &gt; Envío</strong>», con el botón de añadir zona de envío. Le pones nombre, eliges las regiones y ya puedes empezar a meterle métodos.</p>
<p><a href="https://ayudawp.com/?attachment_id=160257" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160257 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-zona-envio-1200x701.jpg" alt="" width="1200" height="701" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-zona-envio-1200x701.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-zona-envio-768x448.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-zona-envio-1536x897.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-zona-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Sobre los códigos postales, que dan bastante juego cuando quieres afinar, puedes poner varios separados por punto y coma, usar comodines con un asterisco al final (<code>28*</code> coge todos los que empiecen por 28) o definir rangos numéricos con tres puntos (<code>28000...28999</code>).</p>
<p>Lo que no funciona es mezclar las dos técnicas, así que <strong>un comodín dentro de un rango numérico no te va a servir de nada</strong> y tienes que elegir una de las dos.</p>
<h3>La zona «Resto del mundo»</h3>
<p>Al final de la lista siempre hay una zona especial que WooCommerce crea por su cuenta y que recoge a todos los clientes que no encajan en ninguna de las tuyas.</p>
<p>Esta zona tiene sus particularidades, y es que <strong>no la puedes mover de sitio, ni renombrar, ni eliminar</strong>. Ahí se queda, siempre la última, haciendo de red de seguridad.</p>
<p>Meterle métodos es opcional. Si le pones alguno, cualquier cliente del mundo podrá comprarte con esas condiciones, y si la dejas vacía, esos clientes verán un mensaje diciendo que no hay envío disponible para su dirección, que es una forma perfectamente válida de decir que ahí no llegas.</p>
<h2>El orden de las zonas es importante, y seguro que esto te ha pasado</h2>
<p>Como <strong>cada cliente se queda con la primera zona que coincide, el orden en el que las tengas colocadas decide qué tarifas ve</strong> cada uno. La regla es sencilla de enunciar, <strong>de la más específica a la más general</strong>, aunque cuesta acordarse cuando llevas seis zonas montadas.</p>
<p><strong>El ejemplo que mejor lo ilustra es el clásico de las islas</strong>. Imagina que tienes una zona llamada España con todo el país y unas tarifas normales, y luego creas otra para Baleares con un recargo, porque allí el transporte te sale más caro. Si la zona de España queda por encima de la de Baleares en la lista ningún cliente balear va a ver nunca las tarifas de su zona, porque encaja antes en la de España y WooCommerce ya no sigue mirando.</p>
<p>La colocación correcta sería primero Baleares, después España y al final la de resto del mundo. Se reordena arrastrando y soltando con el icono de las rayitas que aparece a la izquierda de cada zona. De todos modos, el mismo WooCommerce te avisa si pasa esto, animándote a cambiar el orden si hay coincidencias, algo muy común también.</p>
<p>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-orden-zonas-envio/" rel="nofollow"><img width="1200" height="782" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-zonas-envio-1200x782.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-zonas-envio-1200x782.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-zonas-envio-768x500.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-zonas-envio-1536x1001.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-zonas-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-orden-correcto-zonas-envio/" rel="nofollow"><img width="1200" height="782" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-correcto-zonas-envio-1200x782.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-correcto-zonas-envio-1200x782.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-correcto-zonas-envio-768x500.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-correcto-zonas-envio-1536x1001.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-correcto-zonas-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
</p>
<p>Este es, con diferencia, <strong>el fallo de configuración de envíos que más veces me he encontrado, y lo peor es que no da ningún error, simplemente el cliente ve un precio que no le tocaba</strong>.</p>
<h2>Los métodos de envío por defecto</h2>
<p>WooCommerce viene con tres métodos y ninguno más. Si en el desplegable te aparecen otros es porque tienes alguna extensión instalada que los añade.</p>
<ul>
<li><strong>Precio fijo</strong>: cobras un importe que tú defines, con la posibilidad de complicarlo bastante mediante fórmulas y clases de envío.</li>
<li><strong>Envío gratuito</strong>: no cobras nada, con la opción de exigir condiciones para que aparezca.</li>
<li><strong>Recogida local</strong>: el cliente pasa a recoger, y tiene dos versiones distintas que veremos más abajo porque se prestan a bastante confusión.</li>
</ul>
<p>Dentro de una zona puedes tener varios métodos activos a la vez y el cliente elige. Cada uno se puede activar o desactivar con un interruptor sin necesidad de borrarlo, lo que viene muy bien para probar cosas o para tarifas de temporada.</p>
<h3>El orden de los métodos dentro de una zona también cuenta</h3>
<p>Igual que pasa con las zonas, los métodos dentro de cada zona se pueden reordenar arrastrando, y no es solo estética. <strong>El primer método activo de la lista es el que aparece ya marcado por defecto</strong> cuando el cliente llega a la pantalla de pago.</p>
<p>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-orden-metodos-envio/" rel="nofollow"><img width="1200" height="782" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-1200x782.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-1200x782.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-768x500.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-1536x1001.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-orden-metodos-envio-tienda/" rel="nofollow"><img width="1200" height="695" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-tienda-1200x695.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-tienda-1200x695.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-tienda-768x445.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-tienda-1536x890.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-orden-metodos-envio-tienda.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
</p>
<p>Eso tiene su punto comercial. Si tienes envío gratuito a partir de cierto importe y también un precio fijo, colocar arriba el que te interesa que vea primero cambia lo que el cliente percibe, porque mucha gente no toca la opción que viene preseleccionada.</p>
<p><!-- SUSTITUYE A LA SECCIÓN «Crear un método de envío paso a paso» --></p>
<h2>Crear un método de envío paso a paso (aquí también hay trampa)</h2>
<p>Añadir un método a una zona es un asistente de dos pasos, y conviene no ir con el piloto automático porque en el segundo es donde se decide lo que vas a cobrar.</p>
<ol>
<li>Entras en la zona, creándola nueva o pinchando en una que ya tengas.</li>
<li>Pulsas en el botón de añadir método de envío.</li>
<li>En el <strong>paso 1</strong> eliges qué tipo de método quieres, entre precio fijo, envío gratuito y recogida local.</li>
<li>Pulsas en seguir y pasas al <strong>paso 2</strong>, que es donde se configura de verdad. Si te has equivocado de tipo, el botón de volver te devuelve al paso anterior sin perder nada.</li>
</ol>
<p>En ese paso 2 te vas a encontrar estos campos:</p>
<ul>
<li><strong>Nombre</strong>: viene relleno con el nombre genérico del tipo de método y es lo que verá el cliente durante el pago, así que cámbialo por algo que le diga algo, tipo «Envío estándar 48 h» o directamente el nombre de tu transportista.</li>
<li><strong>Estado del impuesto</strong>: si el coste del envío va sujeto a impuestos o no. Lo normal es dejarlo en sujeto, que es como viene.</li>
<li><strong>Coste</strong>: aquí está la miga y viene <strong>a 0,00 € de fábrica</strong>. Admite un importe fijo o una fórmula de las que te cuento en la sección de precio fijo.</li>
<li><strong>Costes de la clase de envío</strong>: un campo por cada clase que tengas creada, más otro para los productos que no lleven ninguna. Si aquí no ves ningún campo es que todavía no has creado clases, y ese es justo el motivo por el que te decía antes que las clases van primero.</li>
</ul>
<p><a href="https://ayudawp.com/?attachment_id=160265" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160265 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-crear-metodo-de-envio-1200x695.jpg" alt="" width="1200" height="695" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-crear-metodo-de-envio-1200x695.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-crear-metodo-de-envio-768x445.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-crear-metodo-de-envio-1536x890.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-crear-metodo-de-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Y la trampa, que sigue ahí aunque ahora te pregunten las cosas de frente. <strong>Si te limitas a pulsar el botón de guardar sin tocar el campo de coste, acabas de crear un método de envío gratis</strong>, porque el cero viene puesto y no te avisa nadie.</p>
<blockquote><p>Advertencia: un método guardado con el coste a 0,00 € existe, se muestra en tu tienda y no cobra ni un euro.</p></blockquote>
<p>Y aunque el asistente te lo ponga ahora más fácil, merece la pena hacer siempre un pedido de prueba después de tocar esto, aunque solo sea llegando hasta la pantalla de pago sin pagar, para ver con tus ojos que el importe que sale es el que querías.</p>
<h2>El método de precio fijo de envíos a fondo</h2>
<p>Es el método que más juego da y el que vas a usar casi siempre, así que merece explicación detallada.</p>
<h3>La configuración básica</h3>
<p>Al entrar en un método de precio fijo o tarifa plana, como prefieras llamarlo, te encuentras tres campos, el <strong>nombre</strong> que verá el cliente en la pantalla de pago, el <strong>estado del impuesto</strong> para decidir si ese coste lleva impuesto o va exento, y el <strong>coste</strong>, que es el importe que se cobra por el pedido entero.</p>
<p>Dejar el coste a 0,00 € es perfectamente válido y no es ninguna chapuza. Es justo lo que se hace cuando vas a cobrar solo en función de las clases de envío, que es lo que viene ahora.</p>
<h3>Los costes por clase de envío</h3>
<p>En cuanto tengas creada al menos una clase de envío, al entrar en un método de precio fijo te aparecen campos nuevos que antes no estaban, uno por cada clase que tengas más otro para los productos que no tengan ninguna asignada.</p>
<p>Y con ellos aparece un desplegable con dos formas de calcular cuando el carrito lleva productos de varias clases mezcladas, que dan resultados bien distintos:</p>
<ul>
<li><strong>Por clase</strong>: se suma el coste de cada clase presente en el carrito. Con un coste base de 0 €, una clase pesada a 10 € y otra pequeña a 1 €, un pedido que lleve las dos paga 11 €.</li>
<li><strong>Por pedido</strong>: se cobra solo la clase más cara de las que haya. En ese mismo pedido, se cobran 10 € y se ignora la de 1 €.</li>
</ul>
<p>La elección depende de cómo embales. Si cada tipo de producto va en su propio bulto, tiene sentido sumar. Si lo metes todo junto en una caja, cobrar solo el más caro se ajusta mejor a lo que te cuesta de verdad.</p>
<p><a href="https://ayudawp.com/?attachment_id=160268" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160268 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-precio-fijo-tarifa-plana-1200x695.jpg" alt="" width="1200" height="695" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-precio-fijo-tarifa-plana-1200x695.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-precio-fijo-tarifa-plana-768x445.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-precio-fijo-tarifa-plana-1536x890.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-precio-fijo-tarifa-plana.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<h3>Fórmulas para cobrar por cantidad o por porcentaje</h3>
<p>El campo de coste no admite solo un número fijo, también acepta fórmulas sencillas con dos comodines:</p>
<ul>
<li><code>[qty]</code> es el número de artículos que lleva el carrito. Así que una fórmula como <code>10 + (2 * [qty])</code> cobra 10 € fijos más 2 € por cada artículo, lo que se traduce en 12 € con un artículo, 14 € con dos y 16 € con tres.</li>
<li><code>[fee percent="10"]</code> añade un porcentaje del importe que se va a enviar. Con <code>10 + [fee percent="10"]</code>, un pedido de 20 € paga 12 € de envío y uno de 30 € paga 13 €.</li>
</ul>
<p>Ese comodín de porcentaje admite además dos parámetros opcionales para ponerle suelo y techo, <code>min_fee</code> y <code>max_fee</code>. Con <code>10 + [fee percent="10" min_fee="4"]</code> te aseguras de que la parte porcentual nunca baja de 4 €, por muy pequeño que sea el pedido.</p>
<p>Con esto se cubre bastante terreno, pero conviene saber dónde está el límite. <strong>No hay ningún comodín para el peso</strong>, así que por aquí no vas a poder calcular envíos por kilos, y lo cuento más abajo porque es una de las preguntas más repetidas.</p>
<h3>Un caso completo, envío gratis para unos productos y de pago para otros</h3>
<p>Este montaje resuelve de golpe un montón de dudas y merece verlo entero. La idea es que en tu catálogo hay cosas que quieres enviar gratis y otras que no.</p>
<ol>
<li>Creas tres clases de envío, por ejemplo Envío gratis, envío normal y envío urgente.</li>
<li>Asignas cada producto a la clase que le toque.</li>
<li>En el método de precio fijo pones el coste base a 0,00 €.</li>
<li>Dejas vacío el coste de la clase Envío gratis, y pones 3 € en la normal y 7 € en la urgente.</li>
<li>Eliges el cálculo por clase para que se sumen de forma independiente.</li>
</ol>
<p>El resultado es que un pedido que solo lleve productos de la clase gratis no paga nada, uno que mezcle gratis y normal paga 3 €, y uno que lleve de todo paga 10 €. Todo con el método nativo y sin tocar una línea de código.</p>
<h2>Envío gratuito a fondo</h2>
<p>Parece el método más tonto de los tres y resulta que es el que más matices tiene.</p>
<h3>Las cinco condiciones posibles</h3>
<p>Al entrar en el método te encuentras un desplegable con cinco posibilidades, y la diferencia entre las dos últimas se le escapa a casi todo el mundo:</p>
<ul>
<li><strong>Ninguno</strong>: envío gratis para todo el mundo que esté en esa zona, sin condiciones.</li>
<li><strong>Un cupón válido de envío gratuito</strong>: solo aparece si el cliente ha metido un cupón que lo permita.</li>
<li><strong>Una cantidad mínima de pedido</strong>: aparece a partir del importe que tú digas.</li>
<li><strong>Una cantidad mínima de pedido O un cupón</strong>: vale con cumplir cualquiera de las dos.</li>
<li><strong>Una cantidad mínima de pedido Y un cupón</strong>: hacen falta las dos cosas a la vez.</li>
</ul>
<p><a href="https://ayudawp.com/?attachment_id=160269" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160269 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-precio-gratuito-1200x693.jpg" alt="" width="1200" height="693" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-precio-gratuito-1200x693.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-precio-gratuito-768x443.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-precio-gratuito-1536x886.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-precio-gratuito.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<h3>El detalle del importe mínimo cuando hay descuentos de por medio</h3>
<p>Si eliges alguna opción con importe mínimo te aparece debajo una casilla que dice algo así como aplicar la regla del importe mínimo antes de los descuentos de cupón, y esa casilla decide bastante dinero.</p>
<p>Con un pedido de 30 € y un cupón de descuento de 10 €:</p>
<ul>
<li>Casilla <strong>sin marcar</strong>: WooCommerce mira el importe después de aplicar el cupón, o sea 20 €. Si tu mínimo para envío gratis eran 25 €, este cliente paga el envío.</li>
<li>Casilla <strong>marcada</strong>: mira el importe antes del descuento, o sea 30 €. Ese mismo cliente tiene el envío gratis.</li>
</ul>
<p><strong>Aquí es donde un cupón agresivo te puede tumbar sin querer todo el sistema de envío gratis</strong>, o al revés, donde te puedes encontrar regalando envíos en pedidos que después del descuento se han quedado en nada. Decídelo a propósito y no por descarte.</p>
<h3>Los cupones que permiten envío gratuito</h3>
<p>Para que un cupón sirva como llave del envío gratis no basta con que exista, tiene que estar marcado para ello. Se hace en «<strong>WooCommerce &gt; Marketing &gt; Cupones</strong>», en la pestaña de restricciones de uso del cupón, marcando la casilla de permitir envío gratuito.</p>
<h3>Anúncialo pronto o no sirve de nada</h3>
<p>Los gastos de envío que aparecen tarde, ya con el cliente en la pantalla de pago, son de los motivos más habituales de carritos abandonados en cualquier estudio que mires. Si has montado un mínimo para envío gratis y el cliente se entera al final del proceso, te has perdido casi todo el efecto.</p>
<p>Merece la pena que la condición se vea antes, con un aviso en la ficha de producto, una barra de progreso en el carrito o simplemente una línea en la cabecera de la tienda. Eso ya no es configuración de envíos, pero sin ello lo que acabas de configurar rinde la mitad.</p>
<h2>Las clases de envío (con ejemplos)</h2>
<p>Las clases de envío <strong>son el concepto que más cuesta pillar de toda la configuración</strong>, y sobre todo porque <strong>la mayoría de la gente espera que hagan algo que no hacen</strong>.</p>
<h3>Qué son y qué no son las clases de envío</h3>
<p>Una clase de envío es una etiqueta, y nada más. Sirve para agrupar productos que comparten alguna característica de transporte, y punto.</p>
<p>Una clase de envío por sí sola no cobra ni un céntimo, porque <strong>el coste de una no se configura en la clase de envío sino en el método de envío de cada zona</strong>.</p>
<p>Se crean en «<strong>WooCommerce &gt; Ajustes &gt; Envío &gt; Clases de envío</strong>» y tienen tres campos, el nombre, el slug (que si lo dejas vacío se genera solo) y una descripción que solo ves tú en el escritorio.</p>
<p><a href="https://ayudawp.com/?attachment_id=160271" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160271 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-clase-de-envio-1200x695.jpg" alt="" width="1200" height="695" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-clase-de-envio-1200x695.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-clase-de-envio-768x445.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-clase-de-envio-1536x890.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-nueva-clase-de-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<h3>¿Qué tiene que pasar para que una clase de envío sirva para cambiar un precio?</h3>
<p>Para que una clase acabe cobrando algo tienen que darse <strong>cuatro pasos encadenados</strong>, y si falta uno no pasa nada de nada:</p>
<ol>
<li>Creas la clase.</li>
<li>Se la asignas a los productos que correspondan, desde la pestaña de envío de los datos de cada producto.</li>
<li>Entras en el método de precio fijo de cada zona y le pones el coste a esa clase.</li>
<li>El cliente llega al carrito y ve el resultado calculado según el tipo de cálculo que elegiste.</li>
</ol>
<p>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-crear-clase-de-envio/" rel="nofollow"><img width="1200" height="695" src="https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-crear-clase-de-envio-1200x695.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-crear-clase-de-envio-1200x695.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-crear-clase-de-envio-768x445.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-crear-clase-de-envio-1536x890.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-crear-clase-de-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-asignar-clase-envio-a-producto/" rel="nofollow"><img width="1200" height="629" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-asignar-clase-envio-a-producto-1200x629.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-asignar-clase-envio-a-producto-1200x629.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-asignar-clase-envio-a-producto-768x402.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-asignar-clase-envio-a-producto-1536x805.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-asignar-clase-envio-a-producto.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-asignar-precio-en-metodo-de-envio-a-clase-de-envio/" rel="nofollow"><img width="1200" height="746" src="https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-asignar-precio-en-metodo-de-envio-a-clase-de-envio-1200x746.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-asignar-precio-en-metodo-de-envio-a-clase-de-envio-1200x746.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-asignar-precio-en-metodo-de-envio-a-clase-de-envio-768x477.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-asignar-precio-en-metodo-de-envio-a-clase-de-envio-1536x954.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/Woocommerce-asignar-precio-en-metodo-de-envio-a-clase-de-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-pedido-con-clase-envio/" rel="nofollow"><img width="1200" height="736" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pedido-con-clase-envio-1200x736.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pedido-con-clase-envio-1200x736.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pedido-con-clase-envio-768x471.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pedido-con-clase-envio-1536x942.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pedido-con-clase-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
</p>
<p>El paso tres es el que se suele olvidar, y entonces llega la pregunta de por qué he creado las clases y no se cobra nada, porque <strong>a las clases hay que darles un precio zona a zona, y eso hay que hacerlo a mano en cada una</strong>, un peñazo tremendo.</p>
<h3>Consejo importante: crea antes las clases de envío que los métodos de envío</h3>
<p>Este es un consejo que te ahorra paseos de ida y vuelta, que me agradecerás eternamente: <strong>crea siempre primero las clases de envío, y solo después ponte con los métodos de precio fijo</strong>, porque si lo haces al revés te va a tocar modificar tooodos los métodos de precio fijo.</p>
<p>El orden perfecto sería crear las clases, asignarlas a los productos y entonces ir a cada zona a ponerles precio, con los campos ya visibles, justo como te he especificado antes en los 4 pasos.</p>
<h3>Cómo se asignan a los productos</h3>
<p>En un producto simple la clase se elige en la pestaña de envío de los datos del producto, y solo puede tener una.</p>
<p>En un producto variable la cosa se pone interesante, porque el producto padre tiene su clase y además <strong>cada variación puede llevar una clase distinta</strong>. Eso te permite, por ejemplo, que la talla pequeña de algo vaya en una clase barata y la grande en otra más cara, o que una variación en formato digital no lleve clase ninguna.</p>
<p><a href="https://ayudawp.com/?attachment_id=160277" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160277 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-clase-envio-variaciones-1200x636.jpg" alt="" width="1200" height="636" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-clase-envio-variaciones-1200x636.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-clase-envio-variaciones-768x407.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-clase-envio-variaciones-1536x814.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-clase-envio-variaciones.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Si tienes que cambiar la clase de muchos productos a la vez, en el listado de productos puedes seleccionarlos, elegir la edición en lote y cambiarles la clase de envío de golpe.</p>
<h3>Cuatro ejemplos prácticos del potencial de las clases de envío</h3>
<p>Aquí van cuatro situaciones bien distintas para que veas el alcance real que tienen.</p>
<ul>
<li><strong>Por tamaño</strong>: Clases pequeño, mediano y voluminoso, con costes crecientes. Es el caso típico de una tienda de muebles o electrodomésticos, donde lo que encarece el porte no es el peso sino el volumen que ocupa en el camión.</li>
<li><strong>Por fragilidad</strong>: Una clase Frágil con un recargo fijo que cubre el embalaje reforzado, para cristalería, cerámica o cualquier cosa que te vayan a devolver rota si la mandas en una caja normal. Conviene usarla con el cálculo por clase, para que ese recargo se sume al coste que ya tuviera el pedido.</li>
<li><strong>Por tramos de peso</strong>: Clases del tipo Hasta 1 kg, De 1 a 5 kg y Más de 5 kg, cada una con el precio que te cobra tu transportista en ese tramo. Es la manera nativa de acercarse al envío por peso, y tiene sus limitaciones, que te cuento en el punto siguiente.</li>
<li><strong>Para separar el catálogo gratis del de pago</strong>: Una clase con coste vacío conviviendo con otras que sí lo tienen, que es exactamente el montaje completo que te he detallado antes en la sección de precio fijo.</li>
</ul>
<p><a href="https://ayudawp.com/?attachment_id=160276" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160276 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-distintas-clases-envio-1200x636.jpg" alt="" width="1200" height="636" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-distintas-clases-envio-1200x636.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-distintas-clases-envio-768x407.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-distintas-clases-envio-1536x814.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-distintas-clases-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Básicamente cualquier peculiaridad de un producto que encarezca su envío.</p>
<h2>El envío por peso y las falsas expectativas</h2>
<p>Esta es probablemente la pregunta más repetida sobre envíos en WooCommerce y la respuesta es sencilla: <strong>no, </strong><strong>WooCommerce no calcula el coste de envío según el peso del pedido</strong>, y no hay ningún ajuste escondido que lo haga.</p>
<p><strong>El campo de peso de los productos existe, pero no para calcular nada</strong>, se usa para pasarle el dato a otras cosas, no para que el núcleo calcule tarifas. Las fórmulas del precio fijo solo entienden de cantidad de artículos y de porcentaje del importe, como has visto arriba.</p>
<p><a href="https://ayudawp.com/?attachment_id=160278" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160278 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-peso-en-datos-de-envio-1200x636.jpg" alt="" width="1200" height="636" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-peso-en-datos-de-envio-1200x636.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-peso-en-datos-de-envio-768x407.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-peso-en-datos-de-envio-1536x814.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-peso-en-datos-de-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Lo que sí puedes hacer de forma nativa es una aproximación a lo que buscas usando clases por tramos de peso, como en el tercer ejemplo de la sección anterior.</p>
<p>Pero este apaño tiene dos pegas que conviene conocer antes de montarlo, y es que, para empezar, <strong>tienes que asignar a mano cada producto a su tramo</strong>, y luego está el hecho de que el tramo se aplica por producto y no por el peso total sumado del carrito, así que un pedido con cinco artículos de menos de un kilo se seguirá cobrando como si cada uno fuera de su tramo, no como un bulto de cinco kilos.</p>
<p>Para un cálculo real sobre el peso total del pedido hay que salirse de lo nativo, usando plugins, y eso no toca en esta guía.</p>
<h2>El destino del envío y qué cambia en la pantalla de pago</h2>
<p>En «<strong>WooCommerce &gt; Ajustes &gt; Envío &gt; Ajustes de envíos</strong>» hay un ajuste llamado destino del envío que decide <strong>qué campos de dirección ve el cliente</strong>, y las tres opciones dan experiencias bastante distintas.</p>
<ul>
<li><strong>Por defecto a la dirección de envío del cliente</strong>: la pantalla de pago muestra la dirección de facturación y deja disponible la casilla para enviar a una dirección distinta, que el cliente marca si la necesita.</li>
<li><strong>Por defecto a la dirección de facturación del cliente</strong>: se usa la de facturación como dirección de envío, y el cliente puede cambiarla si quiere, pero de entrada no se le piden dos direcciones.</li>
<li><strong>Forzar el envío a la dirección de facturación del cliente</strong>: desaparece del todo la sección de dirección de envío, y el cliente no puede pedir que se le mande a otro sitio ni queriendo.</li>
</ul>
<p>Para una tienda normal las dos primeras son las razonables, porque en cuanto alguien quiera hacer un regalo o mandar algo a su oficina va a necesitar poner otra dirección.</p>
<p><a href="https://ayudawp.com/?attachment_id=160280" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160280 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-de-envio-destino-del-envio-1200x636.jpg" alt="" width="1200" height="636" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-de-envio-destino-del-envio-1200x636.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-de-envio-destino-del-envio-768x407.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-de-envio-destino-del-envio-1536x814.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajustes-de-envio-destino-del-envio.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p><strong>Mi recomendación es que uses la dirección de facturación del cliente siempre</strong>, porque das todas las opciones pero al no mostrarse inicialmente abierto el campo de otra dirección no parece que obligas a rellenar lo mismo dos veces, quedando la dirección de envío como una dirección de envío distinta a la de facturación, que es en realidad para lo que es.</p>
<p><strong>La tercera opción solo tiene sentido en negocios muy concretos</strong>, y a cambio de simplificar el formulario te limita posibles ventas.</p>
<h2>La calculadora del carrito y por qué a veces no la puedes activar</h2>
<p>En esa misma pantalla de opciones hay una casilla para activar la <strong>calculadora de gastos de envío en la página del carrito</strong>, que es ese formulario donde el cliente mete su país y su código postal para ver cuánto le va a costar el porte antes de meterse en el proceso de pago.</p>
<p>Si te encuentras esa casilla en gris, sin poder marcarla<strong> es porque la tienda está usando el bloque de carrito en vez del carrito clásico</strong>, y en ese caso WooCommerce inactiva la opción y te avisa de que la función no está disponible con los bloques y de que el envío se calculará en la pantalla de pago. No es un fallo ni un plugin que interfiera, es el comportamiento previsto, y el propio WooCommerce te lo indica con un texto pequeñito justo debajo de la casilla.</p>
<p><strong>Sobre si merece la pena activarla cuando sí puedes, la respuesta depende de tu catálogo</strong>. Si tus tarifas varían mucho según el destino, dejar que el cliente lo compruebe en el carrito le evita la sorpresa al final y a ti te evita abandonos. Si cobras lo mismo a todo el mundo la calculadora aporta poco y encima añade un formulario más a una página que interesa tener limpia.</p>
<p>Justo debajo tienes otra casilla emparentada con esta, la de ocultar los gastos de envío hasta que se introduzca una dirección. Sirve para no enseñar una estimación que después va a cambiar, y va bien en tiendas con tarifas muy dispares por destino.</p>
<h2>Recogida(s) local(es) ¿hay más de un método en WooCommerce?</h2>
<p>La recogida local tiene dos implementaciones distintas conviviendo en Woocommerce, que funcionan de manera diferente y ni siquiera están en el mismo sitio del escritorio de tu WordPress, así que merece la pena ver las dos antes de decidirte por una de las dos.</p>
<h3>La versión de siempre, dentro de la zona</h3>
<p>Es un método más, que se añade dentro de una zona igual que el precio fijo. Como vive dentro de una zona, <strong>puedes restringir a qué clientes se les ofrece</strong>, que es justo lo que quieres si solo tiene sentido que pasen a recoger los de tu ciudad.</p>
<p>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-agregar-metodo-envio-recogida-local/" rel="nofollow"><img width="1200" height="636" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-agregar-metodo-envio-recogida-local-1200x636.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-agregar-metodo-envio-recogida-local-1200x636.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-agregar-metodo-envio-recogida-local-768x407.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-agregar-metodo-envio-recogida-local-1536x814.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-agregar-metodo-envio-recogida-local.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-configurar-metodo-envio-recogida-local/" rel="nofollow"><img width="1200" height="636" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-recogida-local-1200x636.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-recogida-local-1200x636.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-recogida-local-768x407.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-recogida-local-1536x814.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-configurar-metodo-envio-recogida-local.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
</p>
<p>Su particularidad fiscal es que los impuestos de ese pedido se calculan según la dirección de tu tienda, no según dónde viva el cliente, cosa que tiene toda la lógica porque la entrega se produce en tu local.</p>
<h3>La versión nueva, en su propia pestaña de los ajustes de envío</h3>
<p>La otra vive en una pestaña propia llamada, para ayudar y tal, pues eso <strong>Recogida local</strong>, dentro de los ajustes de envío, y no está dentro de ninguna zona. Lo que trae de bueno es que <strong>admite varios puntos de recogida</strong>, cada uno con su nombre, su dirección completa y sus notas de acceso, algo imposible con la versión clásica.</p>
<p><a href="https://ayudawp.com/?attachment_id=160286" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160286 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-recogida-local-1200x881.jpg" alt="" width="1200" height="881" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-recogida-local-1200x881.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-recogida-local-768x564.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-recogida-local-1536x1127.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-recogida-local.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Y ahora la parte que explica por qué mucha gente ni sabe que esto existe. <strong>Si en tus ajustes de envío solo ves las pestañas de zonas de envío, ajustes de envíos y clases de envío, es que en tu tienda esta versión no está disponible</strong>, y no es que te falte ningún plugin ni que tengas WooCommerce viejo.</p>
<p>El motivo es que <strong>esta pestaña solo aparece si tu página de Finalizar compra usa el bloque de Pago</strong>. Si esa página sigue con el shortcode de toda la vida, la pestaña sencillamente no existe. Para salir de dudas edita tu página de finalizar compra y mira qué lleva dentro, si el <code>[woocommerce_checkout]</code> de siempre o el bloque.</p>
<p>Si quieres tenerla, la secuencia es esta:</p>
<ol>
<li>Editas la página de Finalizar compra y sustituyes el shortcode por el bloque de Pago.</li>
<li>Vuelves a «<strong>WooCommerce &gt; Ajustes &gt; Envío</strong>» y ahí ya te aparece la pestaña de <strong>Recogida local</strong>.</li>
<li>Marcas la casilla para activar la recogida local.</li>
<li><strong>Das de alta al menos una ubicación de recogida</strong>, porque sin ninguna la opción no se le muestra al cliente por mucho que la tengas activada.</li>
</ol>
<p>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-pagina-finalizar-compra-shortcode/" rel="nofollow"><img width="1200" height="716" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-shortcode-1200x716.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-shortcode-1200x716.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-shortcode-768x458.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-shortcode-1536x916.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-shortcode.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-envios-woocommerce/woocommerce-pagina-finalizar-compra-bloques/" rel="nofollow"><img width="1200" height="716" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-bloques-1200x716.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-bloques-1200x716.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-bloques-768x458.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-bloques-1536x916.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-pagina-finalizar-compra-bloques.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
</p>
<p>Y eso no es una decisión menor, porque cambiar al pago por bloques puede romperte plugins que estuvieran enganchados al pago clásico. Piénsatelo antes, no lo actives solo por probar la recogida local.</p>
<p><strong>Hay además un efecto secundario que conviene conocer antes de activarla</strong>, y enlaza con el ajuste de ubicación del cliente por defecto del principio del artículo. Cuando el pago por bloques no tiene ninguna dirección con la que trabajar, cosa que pasa si dejaste la ubicación por defecto sin poner, si la geolocalización no acierta con el país o si todas tus zonas van filtradas por código postal, el selector de envío o recogida <strong>le aparece al cliente ya marcado en recogida</strong>.</p>
<p>La lógica de WooCommerce es que siempre tiene que haber un método seleccionado, y como la recogida es el único que no necesita dirección, gana por descarte. El resultado es que alguien que iba a pedir un envío a casa se encuentra la recogida puesta, y o se da cuenta a tiempo o te acaba haciendo un pedido para recoger sin quererlo.</p>
<p>No existe ningún ajuste para forzar que salga marcado el envío, así que la única forma de evitarlo a día de hoy es la que ya te recomendaba arriba, <strong>dejar la ubicación del cliente por defecto en País/región de la tienda</strong> para que siempre haya una zona con la que trabajar.</p>
<h3>Diferencias entre recogida local clásica y «nueva»</h3>
<table>
<thead>
<tr>
<th>Aspecto</th>
<th>Recogida local clásica</th>
<th>Recogida local nueva</th>
</tr>
</thead>
<tbody>
<tr>
<td>Dónde se configura</td>
<td>Dentro de cada zona de envío.</td>
<td>En su propia pestaña, fuera de las zonas.</td>
</tr>
<tr>
<td>Requisitos</td>
<td>Ninguno, funciona siempre.</td>
<td>La página de Finalizar compra tiene que usar el bloque de Pago.</td>
</tr>
<tr>
<td>Puntos de recogida</td>
<td>Uno solo, el de la tienda.</td>
<td>Todos los que quieras, con dirección y notas.</td>
</tr>
<tr>
<td>Impuestos</td>
<td>Según la dirección de la tienda.</td>
<td>Según la dirección del punto elegido.</td>
</tr>
<tr>
<td>Restricción por zona</td>
<td>Sí, porque vive dentro de una zona.</td>
<td>No, se ofrece a todos los clientes.</td>
</tr>
<tr>
<td>Dirección de envío del cliente</td>
<td>Se le sigue pidiendo.</td>
<td>No hace falta que la rellene.</td>
</tr>
</tbody>
</table>
<p>Un aviso para terminar con esto. Si activas las dos versiones a la vez, WooCommerce te lo advierte en pantalla, y con razón, porque el cliente se encuentra dos opciones de recogida que parecen lo mismo y no lo son. <strong>Elige una y desactiva la otra.</strong></p>
<h2>Transportistas habituales en España</h2>
<p><strong>Esto no es configuración, es contexto</strong> para que sepas cómo llamar a tus métodos y qué esperar de cada uno. Las opciones de mensajería que se usan habitualmente aquí son Correos, SEUR, MRW, GLS y Correos Express, cada una con sus plazos y sus zonas donde va mejor o peor.</p>
<p>Con los métodos nativos lo que vas a hacer es crear precios fijos con el nombre del transportista y el precio que hayas acordado con él, y luego generar las etiquetas por tu cuenta en la web de la agencia.</p>
<p>Conectar tarifas en tiempo real o generar etiquetas desde el propio WooCommerce ya requiere salir de lo nativo.</p>
<h2>Repaso rápido para no dejarte nada</h2>
<p>El orden en el que conviene montar todo esto:</p>
<ol>
<li>Decidir en los ajustes generales adónde vas a enviar y qué ubicación del cliente por defecto usas.</li>
<li>Crear las clases de envío que vayas a necesitar, antes de tocar ninguna tarifa.</li>
<li>Asignar las clases a los productos y a las variaciones.</li>
<li>Crear las zonas, de la más específica a la más general.</li>
<li>Comprobar el orden de las zonas y arrastrarlas si hace falta.</li>
<li>Añadir los métodos a cada zona, completando el paso 2 del asistente sin dejarte el coste a cero.</li>
<li>Ordenar los métodos dentro de cada zona según cuál quieres que salga preseleccionado.</li>
<li>Ajustar el destino de envío y la calculadora en las opciones de envío.</li>
<li>Decidir qué versión de recogida local usas, si es que usas alguna.</li>
<li>Hacer un pedido de prueba desde cada zona que hayas creado.</li>
</ol>
<p>Y los fallos que más se repiten:</p>
<ul>
<li>Poner una zona genérica por encima de otra específica, de modo que la específica no la ve nadie.</li>
<li>Dejar la ubicación del cliente por defecto sin poner, y no entender por qué el envío cambia de precio entre el carrito y la pantalla de pago.</li>
<li>Guardar un método sin tocar el campo de coste, que viene a 0,00 €, y quedarte regalando los envíos sin enterarte.</li>
<li>Crear las clases de envío después de haber montado los métodos, y no encontrarte los campos de coste por clase al crearlos.</li>
<li>Esperar que el precio fijo calcule por peso real sin haber montado los tramos con clases.</li>
<li>Tener activadas las dos versiones de recogida local a la vez sin haberse dado cuenta.</li>
<li>Recibir pedidos para recoger de gente que quería envío a casa, por tener la recogida por bloques puesta sin una ubicación por defecto que la contrarreste.</li>
<li>Volverse loco con la calculadora del carrito en gris sin saber que es por el bloque de Carrito.</li>
</ul>
<h2>Para ir más allá, los casos especiales</h2>
<h3>Envías a Canarias, Ceuta o Melilla</h3>
<p>A efectos de envío puedes montarlo como una zona más, con los códigos de provincia correspondientes, y ponerle las tarifas que te cobre el transportista, que suelen ser bastante más altas y con plazos más largos.</p>
<p>Lo que no puedes es tratarlo como una venta nacional cualquiera, porque fiscalmente es una exportación exenta y los impuestos de destino los liquida el cliente al recibir el paquete. Eso te lo cuento con detalle en la guía de impuestos en WooCommerce, y conviene que lo tengas claro antes de abrir la venta a estos destinos.</p>
<p>Si prefieres no meterte en ese jardín, la alternativa es excluir esas provincias de tus zonas de envío y decirlo con claridad en las condiciones de la tienda, que es una decisión perfectamente legítima y mucha gente la toma.</p>
<h3>Envías fuera de la Unión Europea</h3>
<p>Aquí entran en juego los aranceles y los trámites de aduana, que no existen dentro de la Unión Europea, y lo que tienes que decidir antes de vender es <strong>quién paga esos costes</strong>, si el comprador al recibir el paquete o tú por adelantado.</p>
<p>Sea cual sea tu decisión, déjala escrita en las condiciones de venta antes de abrir el mercado, porque el disgusto de un cliente al que le reclaman en la puerta de casa un importe que no esperaba se convierte en una devolución y en una reseña mala.</p>
<p>La parte fiscal de las ventas fuera de España, incluida la ventanilla única para la Unión Europea, la tienes en la guía de impuestos que te enlazaba arriba.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/configurar-envios-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Plugin, functions.php, plugin de snippets o mu plugin? ¿dónde meto ese código en WordPress?</title>
		<link>https://ayudawp.com/functions-plugin-mu-snippets/</link>
					<comments>https://ayudawp.com/functions-plugin-mu-snippets/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Tue, 29 Sep 2026 06:28:15 +0000</pubDate>
				<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Plugins WordPress]]></category>
		<category><![CDATA[Programación + WordPress]]></category>
		<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[mu-plugins]]></category>
		<category><![CDATA[Principiante]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160295</guid>

					<description><![CDATA[Si alguna vez te han pasado un trozo de código para tu WordPress y no sabías muy bien dónde pegarlo, bienvenido al club. Hay cuatro sitios donde puede ir: el functions.php del tema, un plugin de funciones propio, un mu-plugin, o un plugin de fragmentos de código.]]></description>
										<content:encoded><![CDATA[<p>Si alguna vez te han pasado un código para tu WordPress y no sabías muy bien dónde pegarlo, bienvenido al club. Hay cuatro sitios donde puede ir, a saber: el <code>functions.php</code> del tema, un plugin de funciones propio, un mu-plugin, o un plugin de fragmentos de código. Hasta aquí bien ¿no? ¿o no?</p>
<p>Yo llevo más de veinte años con esa pregunta cada vez que tengo un código delante, y la respuesta es que «depende», lo sé, no te saca de dudas, pero es que acertar o no tiene consecuencias, como personalizaciones que desaparecen de un día para otro, plugins que nadie sabe mantener, código de terceros con más permisos de los que deberías darle.</p>
<p>Dicho esto, vamos al grano, uno por uno. Ya toqué el debate clásico entre <a href="https://ayudawp.com/plugin-o-functions-php/">plugin o functions.php</a>, y también dejé unas primeras pinceladas de las cuatro vías en <a href="https://ayudawp.com/pegar-codigos/">cómo y dónde pegar código PHP, JS y CSS</a>. Aquí quiero ir más allá y <strong>revisar las cuatro opciones juntas, con los riesgos y ventajas cada una</strong>.</p>
<h2>El archivo functions.php del tema</h2>
<p>Es el sitio de toda la vida. Cada tema, o tema hijo, trae su propio <code>functions.php</code>, y lo que metas ahí se ejecuta mientras ese tema esté activo, sin instalar nada nuevo ni añadir peso extra a la web.</p>
<p><strong>Te conviene cuando el código está relacionado de verdad con el diseño</strong>, como un filtro que cambia el extracto, un ajuste de los tamaños de imagen, algo que solo tiene sentido mientras uses ese tema en concreto.</p>
<p>Su principal problema es que si cambias de tema, o actualizas el que tienes sin que sea un tema hijo, pierdes todo sin previo aviso, <strong>nadie te va a avisar de que acabas de borrar tres años de personalizaciones.</strong> Es la pega de siempre y sigue siendo la más gorda, ya la conté con más detalle en <a href="https://ayudawp.com/functions-php-perfecto/">cómo sería el functions.php perfecto</a>.</p>
<h2>Un plugin personalizado de funciones</h2>
<p>No te vengas arriba, no hablo de encargarle a la IA el próximo Jetpack, me refiero a un plugin mínimo, casi sin interfaz, solo para meter tus funciones. Sobrevive a cualquier cambio de tema porque no depende de ninguno.</p>
<p><strong>Te conviene para todo lo que sea independiente del diseño</strong>, como cambios en WooCommerce, ajustes del propio WordPress, integraciones con otros plugins. Si tiene que sobrevivir a un cambio de tema, va en un plugin, no en el <code>functions.php</code>.</p>
<p>Y ojo, el hecho de que sea «tu» plugin no significa que puedas montarlo con cuatro líneas sueltas y sin cabecera, ni calvo ni tres pelucas. Sin control de versiones ni backups, acaba siendo tan frágil como el <code>functions.php</code>, pero con un paso más de complicación.</p>
<p>Esto no contradice lo que siempre digo, que el problema nunca es la cantidad de plugins sino sobrecargar tu web con código que no necesitas, y un plugin de funciones bien hecho no pesa más que el código suelto, simplemente es algo mejor organizado.</p>
<p>Y si te da un poco de respeto crear tu primer plugin, no te preocupes, no hace falta ser programador para hacerlo bien (yo tampoco lo soy, aunque programe cosas). Tienes la forma manual en <a href="https://ayudawp.com/crea-un-plugin-para-liberar-el-fichero-functions-php/">crea un plugin para liberar el fichero functions.php</a>, y la forma fácil, sin tocar FTP, en <a href="https://ayudawp.com/crea-tu-plugin-de-funciones-desde-el-escritorio-de-wordpress/">crea tu plugin de funciones desde el escritorio de WordPress</a>.</p>
<h2>El mu-plugin imprescindible y a prueba de curiosos</h2>
<p>Los mu-plugins viven en su propia carpeta, <code>wp-content/mu-plugins</code>, y WordPress los carga siempre. No aparecen en el listado normal de plugins, así que <strong>nadie los puede desactivar con un clic, ni siquiera sin querer</strong>.</p>
<p>El mu-plugin es como el cableado eléctrico de una casa, no lo ves ni sale en el catálogo de muebles, pero como falle no hay lámpara que valga. <strong>Resérvalo para lo verdaderamente crítico</strong>, lo que tiene que ejecutarse sí o sí, y de regalo va con prioridad a los demás.</p>
<p>Hace poco tuve un caso así con un cliente. Unas 7.000 suscripciones heredadas de WooCommerce estaban cobrando mal el impuesto en cada renovación, y la solución no podía depender de que alguien, sin querer, desactivara un plugin cualquiera un día cualquiera.</p>
<p>Pues monté un mu-plugin que intercepta cada renovación y recalcula el precio, sin excusas y sin margen para el despiste. Lo comenté también al hilo del minimizado en <a href="https://ayudawp.com/minimizar-html-css-js-sin-plugins/">cómo minimizar HTML, CSS y JavaScript sin plugins</a>, y la regla es que cuando la funcionalidad es esencial y ajena al tema, el mu-plugin es la opción más sólida que tienes.</p>
<p>Ahora bien, precisamente esa invisibilidad, si trabajas con más gente en la web, o simplemente se te olvida a ti mismo con el tiempo, <strong>un mu-plugin se convierte en una caja negra que nadie recuerda que existe</strong>. Resérvalo para pocas cosas, y documenta bien qué hace y por qué.</p>
<h2>Los plugins de snippets esos que deberían estar prohibidos</h2>
<p>Supongo que los conoces, me refiero a plugins que te dan una interfaz para pegar código PHP, CSS o JS sin tocar ningún archivo físico, con un interruptor para activarlo o desactivarlo cuando quieras.</p>
<p><strong>Son prácticos si no te manejas con FTP</strong>, si no tienes acceso al editor de archivos, o si quieres poder desactivar algo puntual sin liarte. También van bien para pruebas rápidas, antes de decidir si ese código merece pasar a un plugin propio.</p>
<p>Pero no soy nada fan, porque le estás dando a un plugin de terceros permiso para ejecutar cualquier cosa en tu web. <strong>Si ese plugin sufre una vulnerabilidad, todo lo que hayas metido ahí queda expuesto de golpe</strong>, no solo el propio plugin de snippets.</p>
<p>Ya comparé las opciones en <a href="https://ayudawp.com/mejor-plugin-wordpress-fragmentos-codigo/">plugins de fragmentos de código, ¿cuál es el mejor?</a>, por si necesitas decidir entre WPCode y Code Snippets, por ejemplo, porque aquí no es la cuestión.</p>
<h2>Comparativa rápida de las 4 opciones</h2>
<p>Por si andas cansino y no te apetece leer (y mira que las explicaciones buenas buenas están arriba, en serio, deberías leerlas, vale ya lo dejo) aquí tienes un resumen:</p>
<table>
<tbody>
<tr>
<th>Método</th>
<th>Ideal para</th>
<th>Riesgo principal</th>
<th>¿Se pierde al cambiar de tema?</th>
<th>¿Depende de terceros?</th>
</tr>
<tr>
<td>Archivo functions.php del tema</td>
<td>Código ligado al diseño</td>
<td>Se pierde al cambiar de tema</td>
<td>Sí</td>
<td>No</td>
</tr>
<tr>
<td>Plugin de funciones propio</td>
<td>Código independiente del tema</td>
<td>Mal empaquetado, sin mantenimiento</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>MU-plugin</td>
<td>Funcionalidad crítica e innegociable</td>
<td>Queda invisible y te puedes olvidar de él</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>Plugin de snippets de código</td>
<td>Rapidez, sin tocar archivos</td>
<td>Superficie de ataque de un plugin externo</td>
<td>No</td>
<td>Sí</td>
</tr>
</tbody>
</table>
<p>Cuando ves las cuatro opciones juntas en la misma tabla, la decisión deja de parecer tan complicada ¿a que sí?.</p>
<h2>Mi recomendación</h2>
<p>Si me preguntas, con las webs que llevo yo y con lo que me consultan a diario en mantenimiento la regla que uso es esta:</p>
<ul>
<li>¿Depende del tema?: Al <code>functions.php</code> del tema activo. Cero dudas.</li>
<li>¿Es crítico y no puede fallar nunca?: MU-plugin y apunto en el calendario o lista de tareas que está ahí.</li>
<li>¿Todo lo demás? Plugin propio. No pasa nada por tener siete plugins pequeños cada uno para una cosa, pero a la vista.</li>
</ul>
<p>No hay una opción mejor en abstracto, hay una opción mejor para cada línea de código que escribes, y la decisión, al final, es tuya.</p>
<p><strong>Los plugins de snippets de código</strong> los reservo solo para pruebas rápidas o para quien de verdad no quiere o más bien no puede tocar código a mano, <strong>no son una solución viable ni recomendable en un sitio activo real</strong>.</p>
<p>Si tienes un caso raro que no encaja en ninguna de las cuatro, cuéntamelo en los comentarios, que seguro que no eres el único con esa duda.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/functions-plugin-mu-snippets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Por qué WordPress se actualiza sin mi permiso?</title>
		<link>https://ayudawp.com/wordpress-se-actualiza-solo/</link>
					<comments>https://ayudawp.com/wordpress-se-actualiza-solo/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Mon, 28 Sep 2026 06:28:00 +0000</pubDate>
				<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Experto]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160102</guid>

					<description><![CDATA[No quieres que WordPress se actualice solo, ha aplicado todas las técnicas documentadas pero no te hace ni caso y sigue haciendo las actualizaciones automáticas ¿qué está pasando?]]></description>
										<content:encoded><![CDATA[<p>No quieres que WordPress se actualice solo, ha aplicado todas las técnicas documentadas pero no te hace ni caso y sigue haciendo las actualizaciones automáticas ¿qué está pasando?</p>
<p>Si has puesto las constantes en tu <code>wp-config.php</code> para frenar las actualizaciones automáticas de WordPress y tu web se actualiza igual, la configuración no está mal aplicada. <strong>Hay proveedores de alojamiento en los que el <code>wp-config.php</code> no interviene en esto</strong>, porque quien actualiza tu WordPress no es WordPress, es una capa externa que ni llega a leer tu archivo de configuración.</p>
<p>Lo que sigue es el mecanismo por el que ocurre, los tres escenarios posibles según dónde tengas alojada la web, un método poco conocido que documentó el propio equipo de WordPress en 2013, y una prueba que hice el 7 de agosto de 2026 para comprobar hasta dónde llega ese método.</p>
<h2>El control de actualizaciones que WordPress tiene por defecto</h2>
<p>Desde WordPress 3.7, en octubre de 2013, el núcleo se actualiza solo para versiones de mantenimiento y seguridad. Junto a esa función llegó el juego completo de controles, que sigue siendo el mismo hoy.</p>
<p>Tienes las constantes de <code>wp-config.php</code>, con <code>AUTOMATIC_UPDATER_DISABLED</code> para detenerlo todo y <code>WP_AUTO_UPDATE_CORE</code> para decidir qué tipo de versiones entran. Tienes los filtros <code>auto_update_core</code>, <code>auto_update_plugin</code> y <code>auto_update_theme</code> para afinar por elemento.</p>
<p>Además, desde WordPress 5.5 tienes las casillas de la propia administración para plugins y temas, más la opción de versiones mayores en la pantalla de actualizaciones desde la 5.6.</p>
<p>Todo eso está explicado a fondo en la <a href="https://ayudawp.com/actualizaciones-automaticas-segundo-plano-wordpress/" target="_blank" rel="ugc noopener">guía de actualizaciones automáticas en segundo plano</a> y sigue siendo válido punto por punto. <strong>El problema no es que esos controles estén mal documentados, es que solo gobiernan a WordPress.</strong></p>
<h2>Por qué esos controles pueden quedarse sin efecto</h2>
<p>Las constantes y los filtros los consulta el código de WordPress cuando el propio WordPress va a actualizarse. La clase que decide es <code>WP_Automatic_Updater</code>, y todas las comprobaciones que conoces viven dentro de su método <code>should_update()</code>.</p>
<p>Cuando la actualización la ejecuta una capa externa, esa clase no llega a instanciarse. El resultado en tu instalación es indistinguible de que alguien hubiera pulsado «Actualizar ahora» en tu escritorio, y ese botón nunca ha consultado las constantes ni tiene por qué hacerlo. <strong>No es que el proveedor ignore tu configuración a propósito, es que su sistema opera en un plano donde tu configuración no existe.</strong></p>
<p>De ahí se deduce algo que conviene tener claro antes de seguir probando cosas. <code>DISALLOW_FILE_MODS</code>, la constante que bloquea toda modificación de archivos desde WordPress, tampoco sirve para esto, y por el mismo motivo. Solo la comprueban las clases internas de WordPress cuando van a modificar algo, así que si los archivos los reemplaza un proceso externo esa constante ni se evalúa.</p>
<h2>Tres posibles escenarios según tu proveedor</h2>
<p>Aquí es donde conviene dejar de generalizar, porque el comportamiento varía bastante y no todos los alojamientos gestionados hacen lo mismo.</p>
<h3>Plataformas con sistema propio de actualización del núcleo</h3>
<p>Son las que mantienen su propia infraestructura de actualización, con calendario, copias previas y notificaciones al margen de WordPress. <a href="https://wpengine.com/support/wordpress-updates/" target="_blank" rel="nofollow noopener">WP Engine documenta</a> que no actualizan durante la fase beta ni inmediatamente después de publicarse una versión, sino que su equipo de seguridad la analiza, ajustan la plataforma y entonces empiezan a actualizar las webs de forma automática, con pruebas de humo antes y después de cada actualización.</p>
<p>Ofrecen aplazamiento, pero <a href="https://wpengine.com/blog/get-more-control-over-wordpress-core-updates-with-wp-engines-upgrade-deferral/" target="_blank" rel="nofollow noopener">solo para versiones mayores</a>, no para las de seguridad.</p>
<p>En el mismo aviso añaden que antes de cada actualización automática realizan una copia de seguridad completa restaurable, un detalle con consecuencias prácticas sobre las que volveré.</p>
<h3>Alojamientos con instalador automático de aplicaciones</h3>
<p>Es el escenario más extendido en hosting compartido y el que menos gente tiene presente. Los autoinstaladores que vienen integrados en cPanel, Plesk o DirectAdmin no se limitan a instalar WordPress, guardan una ficha de cada instalación y pueden actualizarla por su cuenta con ajustes propios, completamente independientes de los de WordPress.</p>
<p>Installatron, uno de los más habituales, <a href="https://installatron.com/plugin/features" target="_blank" rel="nofollow noopener">incluye entre sus funciones</a> la actualización automática de núcleo, plugins y temas. En la ficha de cada instalación tiene una pestaña de actualización automática con tres opciones para el núcleo, actualizar a cualquier versión, limitarse a versiones menores y de seguridad, o desactivarlo por completo, además de una pestaña aparte para la copia de seguridad previa con restauración si la actualización falla.</p>
<p>Y hay un detalle que explica bastantes casos. <strong>En su documentación describen un comando que activa la actualización automática de golpe para todas las aplicaciones instaladas en un servidor</strong>, con la variante de limitarlo a versiones menores y de seguridad. Un proveedor puede aplicarlo a nivel de servidor sin que tú intervengas, y desde ese momento tus instalaciones se actualizan al margen de lo que diga tu <code>wp-config.php</code>.</p>
<p>Si tu hosting instaló WordPress por ti desde el panel, revisa esos ajustes antes que ninguna otra cosa. Suele haber ahí un desplegable de actualizaciones del núcleo que casi nadie ha abierto nunca.</p>
<h3>Proveedores que no gestionan las actualizaciones de WordPress</h3>
<p>No todos entran en el reparto. <a href="https://kinsta.com/docs/support/scope-of-support/managed-wordpress-scope-of-support/" target="_blank" rel="nofollow noopener">Kinsta declara en su alcance de soporte</a> que no proporcionan actualizaciones del núcleo de WordPress y recomiendan hacer copia antes de actualizar. Su herramienta de actualizaciones automáticas es un complemento de pago centrado en plugins y temas, con pruebas visuales de regresión y reversión automática si detectan cambios.</p>
<p>En este escenario, y también en cualquier VPS o servidor sin capa de gestión, <strong>los controles de WordPress mandan sin discusión</strong>, porque no hay nadie por encima ejecutando nada.</p>
<h2>La detección de control de versiones</h2>
<p>Queda un método nativo que apenas aparece en la documentación en español. Lo describió Andrew Nacin en la <a href="https://make.wordpress.org/core/2013/10/25/the-definitive-guide-to-disabling-auto-updates-in-wordpress-3-7/" target="_blank" rel="nofollow noopener">guía oficial de desactivación de actualizaciones automáticas</a> publicada en make.wordpress.org con la salida de WordPress 3.7, y sigue vigente en el código actual.</p>
<p>WordPress comprueba, antes de actualizarse, si la instalación está bajo control de versiones. Si detecta que sí se detiene y no modifica nada, con la intención de no sobrescribir archivos a quien despliega mediante Git o Subversion.</p>
<p>La comprobación la realiza el método <code>is_vcs_checkout()</code>, que recorre el sistema de archivos hacia arriba hasta la raíz del disco buscando directorios llamados <code>.git</code>, <code>.svn</code>, <code>.hg</code> o <code>.bzr</code>. <strong>La comprobación es un simple <code>is_dir()</code>, por lo que no valida que exista un repositorio real.</strong> Una carpeta vacía llamada <code>.git</code>, sin ningún archivo dentro, activa la detección igual que un repositorio completo.</p>
<p>Tres precisiones antes de aplicarlo:</p>
<ul>
<li>Tiene que ser una <strong>carpeta</strong>, no un archivo. Un fichero suelto llamado <code>.git</code> no produce ningún efecto, porque <code>is_dir()</code> devuelve falso.</li>
<li>Va en la raíz de WordPress, al mismo nivel que el <code>wp-config.php</code>, y desde ahí cubre núcleo, plugins, temas y traducciones.</li>
<li>No necesita ser accesible por HTTP, porque WordPress solo consulta el sistema de archivos. Es un detalle relevante, ya que un <code>.git</code> real y expuesto por web sí constituye una vulnerabilidad grave.</li>
</ul>
<p>El bloqueo no admite excepciones desde la configuración. Ni siquiera <code>define('WP_AUTO_UPDATE_CORE', true)</code> lo anula, algo que se reportó como fallo en el <a href="https://core.trac.wordpress.org/ticket/52279" target="_blank" rel="nofollow noopener">ticket 52279 de Trac</a> y se cerró como comportamiento previsto. La única vía oficial para desactivarlo es el filtro <code>automatic_updates_is_vcs_checkout</code> devolviendo falso.</p>
<h3>Comprobación previa en tu instalación</h3>
<p>Antes de dar nada por hecho conviene verificar que WordPress está detectando la carpeta. Sin recurrir a WP-CLI se puede hacer con un script PHP que subes por FTP o por el gestor de archivos, visitas una vez conectado como administrador y <strong>borras inmediatamente después</strong>.</p>
<pre>&lt;?php
/**
 * Comprobación temporal de detección de control de versiones.
 * Subir a la raíz de WordPress, visitarlo una vez y BORRARLO.
 */
require_once __DIR__ . '/wp-load.php';

if ( ! current_user_can( 'manage_options' ) ) {
	wp_die( 'Solo administradores.' );
}

echo '&lt;pre&gt;';

echo "1. ¿La carpeta .git existe y es un directorio real?\n";
var_dump( is_dir( ABSPATH . '.git' ) );

echo "\n2. ¿Hay algo forzando el filtro a ignorar la detección?\n";
var_dump( apply_filters( 'automatic_updates_is_vcs_checkout', true, ABSPATH ) );

echo "\n3. ¿Qué devuelve WordPress al comprobarlo de verdad?\n";
if ( ! class_exists( 'WP_Automatic_Updater' ) ) {
	require_once ABSPATH . 'wp-admin/includes/class-wp-automatic-updater.php';
}
var_dump( ( new WP_Automatic_Updater() )-&gt;is_vcs_checkout( ABSPATH ) );

echo '&lt;/pre&gt;';</pre>
<p>Si las tres comprobaciones devuelven <code>true</code>, el actualizador nativo de WordPress tiene prohibido modificar la instalación. La segunda es la más informativa, porque al filtro se le pasa <code>true</code> de forma deliberada, así que un <code>false</code> indicaría que algún plugin o el propio hosting tiene un gancho ahí anulando la detección.</p>
<h2>Hasta dónde llega el método, con una prueba real</h2>
<p>Leer el código dice lo que hace WordPress. No dice lo que hará la capa de tu proveedor, así que monté una prueba para averiguarlo en un caso concreto.</p>
<p>Instalación de pruebas en SiteGround, en <code>aulawp.com/seguridad</code>, con su sistema de actualizaciones automáticas en la configuración por defecto. Creé una carpeta <code>.git</code> vacía en la raíz y ejecuté el script anterior. Las tres comprobaciones devolvieron <code>true</code>, de modo que WordPress detectaba el control de versiones, nadie interceptaba el filtro y el actualizador nativo quedaba bloqueado.</p>
<p>El 6 de agosto de 2026 se publicó <a href="https://wordpress.org/news/2026/08/wordpress-7-0-3-release/" target="_blank" rel="nofollow noopener">WordPress 7.0.3</a>, una versión de seguridad que corregía, entre otros fallos, un XSS reflejado sin autenticación en la pantalla de acceso con potencial de derivar en ejecución de código PHP.</p>
<p>Hay un detalle que condiciona la interpretación, pues en la 7.0.2 de julio el equipo de WordPress.org activó actualizaciones forzadas por la gravedad del fallo y lo indicó expresamente en el anuncio. En la 7.0.3 no lo hicieron, y el anuncio recurre a la fórmula habitual de que los sitios con actualizaciones en segundo plano comenzarán a actualizarse en breve. <strong>Eso descarta que el propio WordPress sorteara el bloqueo por la vía del forzado</strong>, que era el único cabo suelto de la prueba.</p>
<p>El 7 de agosto a las 21:36, veinticuatro horas después de la publicación, SiteGround realizó su copia de seguridad completa y actualizó el sitio a la 7.0.3. Veinticuatro horas es exactamente el intervalo que tenía configurado para lanzamientos menores, así que su sistema actuó según su calendario previsto.</p>
<p>Volví a ejecutar el script a las 23:34, casi dos horas después. Las tres comprobaciones seguían devolviendo <code>true</code>, la carpeta continuaba en su sitio y WordPress seguía determinando que no debía actualizarse. <strong>La capa externa actualizó igualmente.</strong></p>
<p>La conclusión que saco de esto tiene dos partes. El método descrito por Nacin sigue funcionando contra el actualizador nativo trece años después, y no tiene ningún efecto sobre un sistema de plataforma. Lo he verificado en SiteGround y no puedo extenderlo a otros proveedores sin probarlos, aunque el mecanismo hace previsible el mismo resultado allí donde exista una capa similar.</p>
<h2>Averiguar en qué escenario estás</h2>
<p>Tres comprobaciones que puedes hacer en unos minutos:</p>
<ul>
<li>Busca en el panel de tu hosting una sección de WordPress con ajustes de actualizaciones, y si no la hay, busca el autoinstalador y localiza la ficha de tu instalación.</li>
<li>Ejecuta el script de comprobación para saber si el actualizador nativo está operativo o bloqueado.</li>
<li>Revisa tu correo. Las actualizaciones nativas de WordPress llegan desde la dirección de tu propio sitio, mientras que las de plataforma suelen avisar desde el dominio del proveedor. El remitente te dice quién actualizó.</li>
</ul>
<p>Si el panel tiene ajustes de actualización del núcleo, ese es el sitio donde decides. En SiteGround están en <strong>Site Tools &gt; WordPress &gt; Actualizaciones automáticas de WordPress</strong>, con retrasos independientes para lanzamientos mayores y menores y un interruptor aparte para los plugins.</p>
<h3>Revertir en lugar de prevenir</h3>
<p>Cuando existe una capa externa que no puedes desactivar, el planteamiento operativo cambia. <strong>La red de seguridad deja de estar en frenar la actualización y pasa a estar en poder deshacerla.</strong></p>
<p>Tanto los sistemas de plataforma como los autoinstaladores suelen generar una copia inmediatamente antes de actualizar, y ahí tienes el punto de retorno con su fecha y hora. No es lo que buscabas si querías controlar el momento, pero funciona como red siempre que sepas que existe, sepas dónde está el botón y lo incorpores a tu procedimiento. El trabajo pasa de impedir el cambio a detectarlo rápido y tener claro el camino de vuelta.</p>
<h2>El diagnóstico de salud del sitio</h2>
<p>En «<strong>Herramientas &gt; Salud del sitio</strong>» WordPress ejecuta una serie de comprobaciones internas que indican si las actualizaciones en segundo plano pueden funcionar. Verifica si <code>WP_AUTO_UPDATE_CORE</code> tiene un valor válido, si algún plugin ha desactivado la comprobación de versión, si hay filtros interceptando el proceso, si detecta control de versiones, si los permisos de archivo permiten escritura y si va a requerir credenciales de FTP, entre otras.</p>
<p>Una de ellas merece atención especial. <strong>Si una actualización automática falló en algún momento de forma grave, WordPress se autobloquea y no vuelve a intentarlo hasta que entres y pulses «Actualizar ahora» manualmente una vez.</strong> Es posible llevar meses sin actualizaciones automáticas por un fallo puntual antiguo sin haberlo detectado.</p>
<p>Si esa pantalla te resulta excesiva tengo publicado cómo <a href="https://ayudawp.com/desactivar-salud-del-sitio/" target="_blank" rel="ugc noopener">desactivar comprobaciones concretas de la salud del sitio</a> y también cómo <a href="https://ayudawp.com/optimizar-salud-del-sitio/" target="_blank" rel="ugc noopener">reducir su carga sin renunciar a ella</a>, aunque conviene tener presente que ocultar un aviso no equivale a resolverlo.</p>
<h2>Vigilancia de cambios en el wp-config.php</h2>
<p>Todo esto gira alrededor de un archivo y de quién decide su contenido efectivo, así que resulta útil enterarse cuando cambia.</p>
<p>Wordfence lleva años ofreciendo verificación de integridad de archivos del núcleo y cumple perfectamente esa función. Si además quieres vigilancia específica de los archivos de configuración, en mi plugin <a href="https://es.wordpress.org/plugins/vigilante/" target="_blank" rel="nofollow noopener">Vigilante</a> el módulo de integridad de archivos compara <code>wp-config.php</code> y <code>.htaccess</code> contra una base de referencia y muestra las diferencias línea a línea, con aprobación individual de cada cambio. Sirve para detectar que un plugin, una actualización o alguien con acceso ha modificado las constantes. Es gratuito y convive sin conflictos con Wordfence o con el plugin de seguridad que ya tengas instalado.</p>
<h2>¿Y de qué me sirve a mi todo esto?</h2>
<p>La regla que se deduce de todo lo anterior es sencilla. <strong>Antes de escribir una línea en tu <code>wp-config.php</code>, averigua si hay algo por encima que vaya a decidir por ti.</strong> Si no lo hay, los controles de WordPress funcionan exactamente como están documentados, incluida la detección de control de versiones. Si lo hay, tu configuración vive en el panel del proveedor y tu red de seguridad está en las copias previas.</p>
<p>Lo que he verificado directamente es el comportamiento de SiteGround, con fecha y capturas. El resto de proveedores citados aparecen con su propia documentación, no con pruebas mías, y lo señalo porque cada plataforma puede cambiar su funcionamiento sin avisar.</p>
<p>Si mantienes webs de clientes y esto afecta a tu procedimiento, o si has probado la detección de control de versiones en otro proveedor con un resultado distinto, te agradezco que lo cuentes en los comentarios, porque me interesa recopilar el comportamiento de otros hosting.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/wordpress-se-actualiza-solo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Un clic para comprometer tu web, Google sujetándose el cubata y la autoprotección de Vigilante #CrónicasWordPress #DoctorWordPress</title>
		<link>https://ayudawp.com/un-clic-para-comprometer-tu-web-google-sujetandose-el-cubata-y-la-autoproteccion-de-vigilante-cronicaswordpress-doctorwordpress/</link>
					<comments>https://ayudawp.com/un-clic-para-comprometer-tu-web-google-sujetandose-el-cubata-y-la-autoproteccion-de-vigilante-cronicaswordpress-doctorwordpress/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Fri, 25 Sep 2026 15:15:15 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[#CrónicasWordPress]]></category>
		<category><![CDATA[#DoctorWordPress]]></category>
		<category><![CDATA[#TrucosWordPress]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160420</guid>

					<description><![CDATA[Semana cargadita la que te traigo. El lunes, en las Crónicas, hubo actualización de seguridad de WordPress, un lío muy feo con Rank Math y Google empeñado en romper lo poco que le queda sano al buscador. El miércoles, en Doctor WordPress, te enseñé por dentro la autoprotección que he metido en Vigilante 3.0, con todos los casos raros que he estado probando durante meses (que no han sido pocos).]]></description>
										<content:encoded><![CDATA[<p>Semana cargadita la que te traigo. El lunes, en las Crónicas, hubo actualización de seguridad de WordPress, un lío muy feo con Rank Math y Google empeñado en romper lo poco que le queda sano al buscador. El miércoles, en Doctor WordPress, te enseñé por dentro la autoprotección que he metido en Vigilante 3.0, con todos los casos raros que he estado probando durante meses (que no han sido pocos).</p>
<p>Te lo resumo todo aquí, por si no pudiste verlo en directo o prefieres leerlo con un café.</p>
<h2>Crónicas WordPress: WordPress 7.1.1, el lío de Rank Math y Google pisando el acelerador hacia el abismo</h2>
<h3>Seguridad: WordPress 7.1.1 y una semana de agujeros gordos</h3>
<p>WordPress 7.1.1 salió el 17 de septiembre y es, sobre todo, una versión de seguridad. Corrige 11 vulnerabilidades, además de 17 fallos en el núcleo y casi 20 en Gutenberg, entre ellos un XSS almacenado bastante serio. <strong>Si todavía no has actualizado, ya estás tardando.</strong></p>
<p>Me hizo gracia que Anthropic, la empresa de Claude, aparezca acreditada en dos de esas 11 vulnerabilidades. Ya empieza a ser lo normal, y hasta en GitHub queda reflejado cuando ha participado una IA en encontrar o arreglar algo.</p>
<p>En esta versión entra también un arreglo que reporté yo. El mapa del sitio nativo de WordPress devolvía un error 404 en las webs que no tienen entradas (solo páginas, productos y esas cosas, sin blog), cuando debería devolver un 200. Lo avisé, lo arreglaron y ha colado en la 7.1.1. Yo creo que merecía una versión grande, pero oye, entró.</p>
<p>Lo más gordo de la actualización es el cierre de Click to Shell, una cadena de ejecución remota de código. Parece un titular exagerado de web de seguridad, pero aquí es literal, porque <strong>con un solo clic en un enlace que parecía inofensivo te podían comprometer la web entera</strong>, sin necesidad de tener cuenta de usuario.</p>
<p>Y luego está lo de Rank Math, el plugin de SEO con más de 4 millones de instalaciones. Generaba automáticamente una contraseña de aplicación que les daba acceso al administrador de tu web, sin preguntarte, la enviaba a los servidores de la empresa (la misma que está detrás de WP Rocket) y no había forma de desactivarlo ni desde el propio plugin. Se denunció y lo han retirado.</p>
<p>Matt Mullenweg se ha cabreado, y esta vez con razón, así que ha pedido auditorías de seguridad obligatorias para cualquier plugin que pida acceso de administrador. Ya se está viendo cómo implementarlo. Quien dio la voz de alarma en agosto fue el desarrollador de The SEO Framework, que es competencia directa y lo que tú quieras, pero tiene razón y hay que dársela.</p>
<p>Mi opinión, aunque a nadie le importe. No puede ser que estemos hablando de un agujero que con un clic te compromete la web y que encima un plugin de SEO te abra la puerta de atrás por su cuenta. <strong>Para mí Rank Math se ha terminado.</strong> Les tenía cierto criterio como plugin de SEO, pero esto no se lo perdono ni medio.</p>
<p>Hubo más sustos:</p>
<ul>
<li><strong>The Events Calendar:</strong> el plugin de eventos más conocido, con unas 600.000 instalaciones, tenía tres vulnerabilidades de nivel 9,8 (de lo más tocho que hay) por un vector muy poco corriente, los comentarios con bloques de Gutenberg mal saneados. El atacante podía restablecer la contraseña del administrador y quedarse con tu web. Si tienes una versión anterior a la 6.17.4.1, actualiza ya.</li>
<li><strong>WooCommerce Wholesale Lead Capture:</strong> un plugin para mayoristas con unas 6.000 instalaciones que, hasta la versión 2.0.3.1, permitía subir archivos sin validar mediante AJAX y sin identificarse. Son pocas instalaciones, pero ya se han detectado muchos intentos de explotarlo, y eso sí es grave.</li>
</ul>
<p>Cerré la sección con una noticia mía, el lanzamiento de <a href="https://wordpress.org/plugins/vigilante/">Vigilante 3.0</a>. La novedad gorda es que el plugin se autoprotege, porque ¿qué hay peor que te ataquen con un plugin cualquiera? Pues que te ataquen a través del propio plugin de seguridad, que se supone que está para evitarlo. Como el miércoles dediqué el directo entero a esto, te lo cuento más abajo.</p>
<h3>Comunidad: GatherPress sustituye a Meetup, formación para periodistas y un mercado de negocios WordPress</h3>
<p>GatherPress nació en 2018, en un viaje de vuelta de una WordCamp de esos de un montón de horas, cuando alguien se preguntó por qué WordPress dependía de un servicio comercial como Meetup.com. Se subió como plugin al directorio oficial, se ha ido probando con grupos de varios países y este verano la Fundación WordPress lo ha anunciado como sustituto oficial de Meetup. Ya está en fase de pruebas en events.wordpress.org, y la fundación se ahorrará unos 200.000 dólares al año, que se dice pronto. <strong>La idea me parece cojonuda, lo que no me lo parece tanto es lo que se ha tardado en hacerle caso.</strong></p>
<p>El Colegio Profesional de Periodistas de Andalucía ha lanzado más de 100 horas de formación para sus colegiados, y he tenido el gusto de que me incluyan. Me toca impartir el bloque de inteligencia artificial para WordPress, porque WordPress sigue siendo imprescindible, pero con IA se puede mejorar muchísimo. Si eres periodista y estás colegiado en Andalucía, apúntate, que creo que para vosotros es gratis.</p>
<p>También ha aparecido <a href="https://wpacquire.com" target="_blank" rel="nofollow noopener">WP Acquire</a>, un mercado para comprar y vender negocios basados en WordPress (plugins, temas, tiendas o webs). Publicar el anuncio cuesta 50 dólares, no cobran comisión y el vendedor se queda con el 100 % de la venta. Lo veo como un síntoma de madurez del sector, así que si te planteas vender algo, échale un ojo.</p>
<h3>Desarrollo: lo que trae WordPress 7.2 y WooCommerce subiendo el listón de PHP</h3>
<p>WordPress 7.2 está previsto para diciembre de 2026, así que será la última versión del año. En seguridad trae bastante:</p>
<ul>
<li>Una especie de modo sudo (para los que venís de Linux) que te pide volver a identificarte para las acciones sensibles.</li>
<li>Una API de secretos, la Secrets API.</li>
<li>Un refuerzo de las contraseñas de aplicación, que llevaban tiempo en barbecho (y a la vista de lo de Rank Math, falta hacía).</li>
</ul>
<p>Además, el editor del sitio se podrá ampliar desde plugins con DataViews y DataForms, de lo que vamos a hablar mucho pronto. El bloque de tabla de contenidos pasa a estable, llega algún bloque nuevo que ya veremos en directo con calma y los Dashicons de toda la vida dejan paso a iconos SVG. No es para volverse loco, es una renovación, pero ya hay gente quejándose del icono nuevo, porque somos así de tocapelotas.</p>
<p>Y ojo, que <strong>nos despedimos de los temas «Twenty» después de 16 años</strong>. El nuevo tema por defecto se llamará Ipsum (como el Lorem Ipsum) y ya se puede descargar desde GitHub, que ahora todo va a GitHub (a mí no me gusta nada, pero a todo el mundo le encanta). Es minimalista, pensado para blogs, muy centrado en la accesibilidad y con varias tipografías y variaciones de estilo. Aparte saldrá otro tema, Metis, bastante más vistoso, que no vendrá integrado.</p>
<p>También se ha abierto la llamada a pruebas de DataForms para las pantallas de ajustes. Algo se va a notar a la vista, pero la mejora de verdad está en el rendimiento.</p>
<p>WooCommerce, por su parte, resucita Purple, su tema de bloques, en beta pública. Lo quitaron en julio de 2025 y ahora vuelve con muchas funciones que normalmente pedirían plugins, ya integradas en bloques. En WordPress.com ya es el tema por defecto, y no creo que tarde mucho en sustituir a Storefront como el tema que te sugiere WooCommerce al instalarlo.</p>
<p>La noticia de WooCommerce que más me preocupa es otra, porque <strong>va a subir el mínimo de PHP de la 7.4 a la 8.1</strong>, y poco después a la 8.3. Conozco montones de tiendas que siguen en PHP 7.4, no por WooCommerce ni por WordPress, sino por algún plugin concreto que casca en cuanto subes de versión. La 7.4 ya no tiene soporte ni actualizaciones de seguridad, así que o pones al día esos plugins o te quedas sin poder actualizar WooCommerce. Yo apuntaría como mínimo a la 8.2, y lo ideal sería la 8.3.</p>
<p>Y ya que hablamos de WooCommerce, me pidió mi amigo Jordan Suárez un tutorial sobre impuestos, que es de lo más cansino y raro que tiene WooCommerce, y resulta que no lo tenía. Pues ya la tienes, la <a href="[ENLAZAR:%20gu%C3%ADa%20de%20impuestos%20en%20WooCommerce]">guía para configurar los impuestos en WooCommerce</a>. Son unos 30 minutos de lectura, así que no es para leerla de un tirón, es para guardarla y tirar de ella cuando te surja una duda. Gratis, como siempre, y sin publicidad que moleste.</p>
<h3>IA: un curso gratis de Learn WordPress</h3>
<p>Esta semana había muchas noticias de IA en WordPress, pero casi todo me pareció relleno, y si a mí me aburre, a ti ni te cuento. Me quedo con una. En Learn WordPress han publicado un curso gratuito de unas 9 horas sobre la IA integrada en WordPress desde la 7.0. Tiene cuatro módulos, casi todos sobre gestión de contenidos y la integración con Claude y ChatGPT. No es nada técnico, es online y lo haces cuando quieras, así que no tiene pega.</p>
<h3>SEO: Google, sujétame el cubata</h3>
<p>Google ha descubierto, llámame loco, que si sus vistas previas con IA siguen resumiendo el contenido sin mandar clics, se puede quedar sin contenido original. Porque las IA no crean contenido original, reciclan, hacen refritos y resúmenes de lo que ya existe. Así que ahora plantea pagar a los editores cuando su contenido alimenta esas respuestas, con un programa piloto que empezará, cómo no, en Estados Unidos. Donde más sentido tendría es entre los pequeños y medianos editores, los blogueros, que somos los que de verdad alimentamos todo esto. <strong>Que paguen por el trabajo bien hecho, no con subvenciones.</strong></p>
<p>Luego vienen las alegrías de siempre:</p>
<ul>
<li><strong>Fichas de empresa en las vistas previas con IA:</strong> los perfiles de Google Business empiezan a mostrarse ahí, con un «mostrar más» que abre una conversación con más datos del negocio. O sea, que nadie visita ya ni tu ficha ni Google Maps, todo se queda dentro del modo IA. Si con las preguntas relacionadas ya se cargaban el SEO normal, ahora le toca al SEO local.</li>
<li><strong>Anuncios camuflados en el modo IA:</strong> anuncios de texto metidos entre las respuestas con una etiqueta de patrocinado. Justo lo que necesitaba el buscador para que los usuarios terminen de perderle la confianza.</li>
<li><strong>Un botón de modo IA en la página de resultados:</strong> para empujarte a salir de la búsqueda clásica, que ya tienen asumido que es un desastre.</li>
</ul>
<p>OpenAI también ha movido ficha con los agentes patrocinados de ChatGPT, conversaciones con un agente de la marca cuando ves un anuncio. Aquí voy a ser justo, porque sobre el papel van a estar bien separados de las respuestas normales y, <strong>si de verdad no mezclan lo patrocinado con lo neutral, me parece bastante más transparente que lo de Google</strong>. Hasta una buena idea, fíjate.</p>
<p>Llevo 25 años en esto y no me explico cómo Google se está cargando su propio producto. <strong>La IA no ha llegado a internet, se lo ha cargado, y Google le ha metido el turbo a la carrera hacia el abismo.</strong></p>
<h3>Europa y la EU Kids Act</h3>
<p>Para rematar, la Unión Europea está preparando la EU Kids Act, que prohibiría las redes sociales (Instagram, TikTok, YouTube) a menores de 13 años, permitiría el acceso entre los 13 y los 15 solo con supervisión de los padres, funciones limitadas y control horario, y vetaría hasta el scroll infinito.</p>
<p>Ya sé que mucha gente lo ve bien, porque hay que proteger a los niños y las plataformas abusan, y en eso no les falta razón. Pero esta es una opinión de las intensas, así que te la cuento tal cual. <strong>Las instituciones están para servirnos, no para sustituirnos.</strong> Si aceptamos que decidan a partir de qué edad y cómo usan nuestros hijos las redes, les estamos dejando hacer nuestro papel de padres, primero en esto y luego en lo que les dé la gana. Lo que hay que hacer es formar a los padres para que sean conscientes y responsables de cómo usan sus hijos las redes y la IA.</p>
<p>En el chat, Mel Gómez apuntó algo con lo que estoy muy de acuerdo, que al final la gente dejará de fiarse de la IA y pedirá referencias. Creo que volveremos a lo único que da confianza de verdad, <strong>saber quién ha escrito qué</strong>. Yo me hago responsable de lo que digo, aun a riesgo de equivocarme, y si mañana tengo que rectificar, rectifico. Por eso se está volviendo tanto a los foros y a las comunidades de nicho, y no me extrañaría que volviéramos a los blogs enlazándose entre ellos, como con aquellos blogrings de antes.</p>
<p><a href="https://www.youtube.com/watch?v=5eMtaQ706Tc">Ver el directo completo de Crónicas WordPress en YouTube</a></p>
<div class="ast-oembed-container " style="height: 100%;"><iframe loading="lazy" title="WordPress 7.2, el nuevo tema Ipsum, EU Kids Act y Google sigue arruinando Internet con AI Overviews…" width="1600" height="900" src="https://www.youtube.com/embed/5eMtaQ706Tc?feature=oembed&amp;enablejsapi=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<h2>Doctor WordPress: cómo funciona la autoprotección de Vigilante 3.0</h2>
<p>Me habíais preguntado bastante por la autoprotección de Vigilante 3.0, así que le dediqué el directo entero. La idea llevaba meses rondándome la cabeza, porque <strong>si no te puedes fiar de tu plugin de seguridad, no te puedes fiar de nada de lo que te diga</strong>. Un plugin de seguridad te protege de otros plugins y de inyecciones, pero ¿quién lo protege a él?</p>
<h3>La cerradura, la caja fuerte y la fábrica</h3>
<p>Piensa en tu web como en tu casa. Un ladrón listo no revienta la puerta, que hace mucho ruido. Lo que hace es cambiarte el bombín por uno que abre con tu llave y también con la suya, como hacen con los cajeros y las tarjetas. Tú sigues entrando como siempre, no notas nada, y él entra cuando quiere. Eso es lo que tiene que detectar la autoprotección, que alguien ha tocado tu cerradura.</p>
<p>Para eso Vigilante se comprueba contra tres referencias:</p>
<ul>
<li><strong>El manifiesto:</strong> un archivo que va con el plugin y que es distinto en cada instalación. Sería la ficha grabada en el propio bombín.</li>
<li><strong>La huella en la base de datos:</strong> la tarjeta que te dio el cerrajero y que guardas en la caja fuerte. Para falsificarla no basta con entrar en casa, también hay que abrir la caja fuerte. Y cada vez que el cerrajero (el actualizador de WordPress) te cambia el bombín, te da una tarjeta nueva.</li>
<li><strong>Las sumas de verificación de WordPress.org:</strong> el registro del fabricante, que está en la fábrica y no en tu casa, así que aunque te hayan reventado la caja fuerte, eso no lo pueden tocar. Eso sí, cuando sale una versión nueva, WordPress.org tarda unas horas en actualizar ese registro.</li>
</ul>
<p>Para engañar al plugin harían falta las tres llaves, y la tercera ni siquiera está en tu casa. En el escritorio de Vigilante lo ves como «Autoprotección de Vigilante», con el número de archivos verificados y «3 de 3 referencias» si todo está bien.</p>
<h3>Los casos que te puedes encontrar</h3>
<p>En el directo fui forzando cada situación con un mu-plugin de pruebas en mi instalación local (la que rompo casi a diario). Te resumo qué verías y qué hacer en cada caso:</p>
<ul>
<li><strong>Todo correcto:</strong> tres de tres referencias, en verde, y a otra cosa.</li>
<li><strong>Verificado, pero sin sumas de WordPress.org:</strong> pasa justo después de una actualización, mientras el registro del fabricante se pone al día. Lo da por bueno y te lo explica en la comprobación de seguridad.</li>
<li><strong>Dos de tres referencias:</strong> el indicador pasa a gris. No es grave, pero te avisa.</li>
<li><strong>Una hoja de estilos, un script o una imagen modificados:</strong> aparece un aviso, porque ya no es solo una referencia, hay un archivo tocado. Muchas veces es cosa de un plugin de caché u optimización que minifica los archivos, así que excluye la carpeta de Vigilante. Si no usas ninguno, pulsa «Reparar Vigilante», que descarga una copia limpia desde WordPress.org y sustituye los archivos en un clic.</li>
<li><strong>Versión cambiada sin confirmar:</strong> el manifiesto no coincide, por ejemplo porque has actualizado a mano por FTP sin pasar por el actualizador. Si has sido tú, lo aceptas, y si no, reparas.</li>
<li><strong>Versión anterior instalada:</strong> alguien ha sustituido Vigilante por una versión más antigua, que puede tener vulnerabilidades ya corregidas. Si no has sido tú, reparar.</li>
<li><strong>Archivo de código modificado:</strong> aquí ya estamos en la zona crítica. El aviso sale en rojo en todas las pantallas importantes del administrador (menos en el editor), no se puede cerrar y la puntuación de seguridad deja de ser fiable. En el ejemplo te decía qué archivos habían tocado, el del cortafuegos y el del acceso, así que ya no te puedes fiar ni de uno ni de otro. Reparar, inmediatamente.</li>
<li><strong>Archivo inyectado:</strong> alguien ha metido un archivo nuevo en la carpeta del plugin. En la prueba se llamaba «puerta-trasera.php», pero ningún atacante lo va a llamar así, le pondrá un nombre que parezca legítimo para que no lo borres. Pide a tu hosting que mire cuándo llegó ese archivo, repara y vuelve a analizar. Y revisa la auditoría de seguridad, que es donde queda todo registrado.</li>
<li><strong>Manifiesto sustituido, borrado o dañado:</strong> han manipulado una de las llaves. Quedan las otras dos referencias, pero lo rápido es reparar desde WordPress.org, que siempre va a estar mucho mejor protegido que tu web (y que la mía).</li>
<li><strong>Tareas programadas eliminadas:</strong> este es de los más retorcidos. Vigilante hace sus comprobaciones con el cron de WordPress (la tarea de mantenimiento diario), y si alguien se las carga, el plugin sigue ahí pero no hace nada, sin análisis ni alertas. Revisa con <a href="https://wordpress.org/plugins/wp-crontrol/">WP Crontrol</a> que estén las tareas que empiezan por «vigilante_» y, si faltan, haz un análisis de seguridad completo.</li>
<li><strong>Autoprotección desactivada por código:</strong> es el último aviso que vas a recibir, porque a partir de ahí nada comprueba nada. Por lo menos te dice qué archivo lo ha desactivado, como una especie de memoria de quién te mató. Si no has sido tú, trátalo como una intrusión, borra o desactiva ese archivo (renombrarlo a .off, por ejemplo) y vuelve a comprobar.</li>
<li><strong>Todavía sin comprobar:</strong> lo normal justo después de instalar, o tras una instalación por FTP. Lanza un análisis desde la pestaña de integridad de archivos y listo.</li>
</ul>
<h3>Plugins hechos con IA: el problema son las instrucciones que no das</h3>
<p>Iván San José comentó en el chat que está creando plugins para uso propio con agentes de IA y que no hay límites. Sí que los hay, y el límite eres tú, porque luego hay que mantenerlos, actualizarlos y someterlos a revisiones que, si las haces tú solo, nunca van a ser suficientes.</p>
<p>Lo veo a diario con los clientes de mi servicio de mantenimiento. He pasado de que me pidan código a que me lo pasen, plugins hechos por alguien de marketing con ChatGPT o Claude que no sabe programar y lo da por bueno. Ninguno pasa mis comprobaciones de seguridad y de estándares de código. Y yo, que tengo mis skills bien afinadas y hago pruebas en instalaciones de test, también cometo errores.</p>
<p>Hace nada me pasaron un plugin que ya había pasado por mis skills de seguridad y aun así duplicaba pedidos en producción, porque nadie había cerrado un bucle. La IA sabe mucho de código, pero también hace cosas que no le has pedido. Si le dices que se asegure al 100 % de que un email llega, igual te lo manda por SMTP, por PHP mail y por un tercer sistema. <strong>El problema de los plugins hechos con IA no suelen ser las instrucciones que le das, sino las que no le das.</strong> Para jugar o para algo interno, adelante, pero si va a una web abierta al público, que lo revise alguien más y usa modelos buenos, de pago.</p>
<h3>Nada es invulnerable</h3>
<p>¿Significa todo esto que Vigilante es invulnerable? Ni de coña. <strong>La seguridad al 100 % no existe, y quien te diga lo contrario te está mintiendo.</strong> Vigilante, igual que otros dos plugins míos, ha tenido vulnerabilidades, unas las encontré yo y otras los usuarios. Las arreglo esa misma tarde y lo cuento, pero pasan.</p>
<p>La mayoría de los hackeos no vienen de fallos desconocidos, sino de vulnerabilidades conocidas que alguien no ha parcheado. Hay muchísimos escáneres, cada vez más con IA, tirando de bases de datos de vulnerabilidades y buscando webs con la versión afectada de un plugin. Hasta un reloj parado acierta dos veces al día. Lo bueno del código abierto es que todo es transparente y las vulnerabilidades se conocen cuando ya están corregidas. El problema es cuando se publica el parche y tú no actualizas, porque el atacante sí se ha enterado.</p>
<p>Así que lo de siempre, que es lo que más se nos olvida. <strong>Ten todo actualizado</strong>, y si puedes, Vigilante instalado, al día, con la autoprotección activa y la configuración de seguridad al máximo.</p>
<p><a href="https://www.youtube.com/watch?v=jt-1iNVnbJ0">Ver el directo completo de Doctor WordPress en YouTube</a></p>
<div class="ast-oembed-container " style="height: 100%;"><iframe loading="lazy" title="¿Un plugin de seguridad WordPress que se auto-protege? ¿qué clase de magia negra es esta?" width="1600" height="900" src="https://www.youtube.com/embed/jt-1iNVnbJ0?feature=oembed&amp;enablejsapi=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<h2>Nos vemos en el próximo directo</h2>
<p>Y hasta aquí la semana. Ya lo sabes, los lunes toca Crónicas WordPress y los miércoles, Doctor WordPress, a las 19:30 (hora peninsular) <a href="https://www.youtube.com/AyudaWordPressES?sub_confirmation=1">en el canal de Ayuda WordPress</a>. Por cierto, admito invitados, así que si tienes algo interesante que contar, dímelo. Y si tienes cualquier duda de lo que he contado, o me quieres corregir en algo, te leo ahí abajo en los comentarios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/un-clic-para-comprometer-tu-web-google-sujetandose-el-cubata-y-la-autoproteccion-de-vigilante-cronicaswordpress-doctorwordpress/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>