<?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, 18 Sep 2026 17:59:58 +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.1 al caer, el culebrón de Automattic y qué puñetas son los llms.txt #CrónicasWordPress #DoctorWordPress</title>
		<link>https://ayudawp.com/wordpress-7-1-1-al-caer-el-culebron-de-automattic-y-que-punetas-son-los-llms-txt-cronicaswordpress-doctorwordpress/</link>
					<comments>https://ayudawp.com/wordpress-7-1-1-al-caer-el-culebron-de-automattic-y-que-punetas-son-los-llms-txt-cronicaswordpress-doctorwordpress/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 17:59:58 +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=160359</guid>

					<description><![CDATA[Esta semana las Crónicas me salieron con un día de retraso, y no porque faltara tema, que de eso andamos sobrados, sino por movidas mías. Pero cumplo, que para eso estoy. Así que aquí tienes el repaso de lo que conté en las Crónicas WordPress y de lo que enseñé el miércoles en el Doctor WordPress, por si te los perdiste en directo o los quieres repasar con calma.]]></description>
										<content:encoded><![CDATA[<p>Esta semana las Crónicas me salieron con un día de retraso, y no porque faltara tema, que de eso andamos sobrados, sino por movidas mías. Pero cumplo, que para eso estoy. Así que aquí tienes el repaso de lo que conté en las <strong>Crónicas WordPress</strong> y de lo que enseñé el miércoles en el <strong>Doctor WordPress</strong>, por si te los perdiste en directo o los quieres repasar con calma.</p>
<h2>Crónicas WordPress: revisiones con IA, WordPress 7.1.1 al caer y el culebrón de Automattic</h2>
<h3>Seguridad: la IA ya te revisa los plugins (y yo fui el conejillo de indias)</h3>
<p>Lo más gordo en seguridad es que WordPress.org ha activado un sistema de revisión automática con IA y Jetpack Scan que analiza cada plugin que subes. Y ojo, porque <strong>no revisa solo cuando lo subes por primera vez, también en cada actualización</strong>.</p>
<p>Lo anunció David Pérez esta semana, aunque funciona desde el 5 de junio. Busca patrones de código peligroso (salidas sin escapar, falta de comprobaciones nonce, inyecciones SQL y demás), te calcula una puntuación de riesgo y, si te pasas, te bloquea la actualización y te manda un correo para que lo arregles.</p>
<p>Y aquí te hablo con conocimiento de causa, porque fui conejillo de indias sin comerlo ni beberlo. Justo cuando arrancó todo subí unas actualizaciones de Vigilante y me llovieron los avisos. Falsos positivos había, y alguna posible vulnerabilidad cogida con pinzas también, que un administrador abriendo una ventana de popup dispare una alarma es hilar muy fino.</p>
<p>El equipo de plugins, majísimos y rapidísimos atendiéndome, todo hay que decirlo. Pero me tiré un fin de semana a base de actualización tras actualización solo para contestar al automatismo, y cada respuesta me devolvía el mismo falso positivo más tres cosas nuevas.</p>
<p>Que quede claro, <strong>la idea me parece estupenda</strong>. Llevo años avisando de que hay muchas comprobaciones al subir un plugin y bastantes menos en las actualizaciones, que es justo por donde se cuelan los problemas, así que esto viene a tapar ese agujero. Lo único que pido es que <strong>metan estas mismas comprobaciones en el Plugin Check</strong>, la herramienta oficial que muchos pasamos antes de subir nada, para no llevarnos la sorpresa de que una te diga que está todo bien y otra, en paralelo, que está mal.</p>
<p>En vulnerabilidades de la semana, Wordfence detectó una inyección SQL sin autenticar en rtMedia, un plugin de galerías con miles de sitios expuestos. De estas salen todos los días, es lo normal, y en mi propio Vigilante me detectaron una que arreglé esa misma tarde. También hubo un fallo de autorización en un complemento de PixelYourSite para Easy Digital Downloads. Estos plugins que te inyectan píxeles y scripts de terceros son de los que <strong>yo prohíbo a mis clientes sin pestañear</strong>, porque te saltan capas de seguridad de tu propio WordPress.</p>
<p>Y te conté el caso de un «beg bounty», que no es lo mismo que un bug bounty. El bug bounty es el programa serio de recompensas por encontrar fallos, el que tienen Wordfence, Patchstack y compañía. El beg bounty es el primo pesado, alguien que te escribe directamente, sin programa que valga, para «avisarte» de una supuesta vulnerabilidad inflada y, al terminar el mensaje, pedirte una recompensa. Me llegó uno y lo desmenucé en el blog para que sepas <a href="https://ayudawp.com/beg-bounty/">distinguir un aviso de verdad de un sablazo con corbata</a>.</p>
<h3>Comunidad y desarrollo: WordPress 7.1.1 y un WooCommerce que se queda corto</h3>
<p>En comunidad ya se ha anunciado el equipo que va a llevar WordPress 7.2, con Mullenweg otra vez como líder de versión (que da para un rato, y lo dejo para el final). Habrá tema nuevo por defecto, previsto para 2027, aunque cada vez le veo menos sentido a los temas por defecto.</p>
<p>Pero antes que la 7.2 llega la 7.1.1, que ya está en versión candidata y sale esta misma semana. Corrige un montón de fallos, y <strong>uno me toca de cerca porque lo reporté yo</strong>: el mapa del sitio nativo de WordPress devolvía un 404 en webs sin entradas de blog, algo que pillé con mi plugin Visibility, que gestiona justo eso. Mi ticket ya está asignado a esta versión, así que queda arreglado.</p>
<p>En WooCommerce 11.1 hay dos cosas. Una buena, que por fin han consolidado la galería de imágenes por variación, para que al elegir una variación te cambie la galería, algo la mar de práctico. Y una a medias, porque han metido el derecho de desistimiento electrónico pero se queda muy corto, no cubre ni de lejos lo que exige la normativa europea y ellos mismos reconocen que no garantiza el cumplimiento. <strong>No entiendo para qué se meten en ese jardín</strong> cuando ya hay plugins que lo cubren, como <a href="https://es.wordpress.org/plugins/eu-withdrawal-compliance/">el mío</a>, que es 100% gratis y lo tienes en el repositorio.</p>
<p>Y en mi terreno he actualizado uno de mis plugins más veteranos. El antiguo No Gutenberg pasa a llamarse <a href="https://ayudawp.com/si-gutenberg/">Sí Gutenberg</a> (versión 2.2.0), y no es un capricho de nombre, es un cambio de enfoque. Antes desactivaba Gutenberg del todo y ahora te deja elegir. Puedes quitar el editor de bloques solo en las entradas y dejarlo en las páginas, decidirlo por tipo de contenido o por nivel de usuario, restaurar la pantalla de widgets clásicos y alguna cosa más. Porque <strong>yo nunca he odiado el editor de bloques</strong>, por mucho que se diga. Lo que siempre he defendido es que los bloques tienen sentido como maquetador para las páginas, no como editor para las entradas de blog, que no necesitan tanto artificio.</p>
<h3>IA y SEO: spam con IA, el cero clics y qué plugin de SEO pesa menos</h3>
<p>Enrique Dans avisaba del spam de comentarios hecho con IA, que ya se está saltando a Akismet. Hay bots que cogen contenido y lo pasan por un modelo de lenguaje para generar comentarios que cuelan en un montón de sitios, se habla de cientos de miles de dominios atacados. A mí el volumen me da igual, lo que preocupa es la calidad, que esquiva los filtros de siempre. Y <strong>mi antispam favorito sigue siendo el que ya trae WordPress de serie</strong>, marcar en los ajustes de comentarios que cada uno se apruebe a mano. No hay otro mejor, y encima te ahorras el plugin.</p>
<p>En SEO, un estudio sobre 19 millones de consultas en inglés dice que el bloque de «la gente también pregunta» de Google ya lo responde la IA casi en su totalidad, un 97% la primera semana de septiembre frente al 86% de agosto. O sea, <strong>cero clics como norma</strong>, la IA te contesta ahí mismo y no queda enlace que rascar.</p>
<p>Y cerré con una comparativa mía bastante a lo bruto sobre <a href="https://ayudawp.com/plugin-seo-ligero/">qué plugin de SEO pesa menos y consume menos recursos</a>. Te resumo lo que salió: SEO Framework es el más ligero en varias cosas, hay que ser justos; Rank Math me ha decepcionado y ahora mismo es una bestia parda en consumo; Yoast, en cambio, se ha puesto las pilas y ha aligerado bastante. Mi Visibility no mete tablas propias en la base de datos, tira de las nativas y luego limpia, y llega a hacer menos consultas que WordPress a pelo. Tienes el análisis completo, con el CSV para que lo compruebes sin trampa ni cartón.</p>
<h3>El culebrón: apartan a Mullenweg de Automattic (y a los tres días, de vuelta)</h3>
<p>Y llegamos al culebrón de la semana, del mes y casi del año. El consejo de administración de Automattic apartó a Matt Mullenweg como CEO y nombró en su lugar, como interino, a su director financiero, Mark Davis. Tres días después, Mullenweg anunciaba por Slack que había recuperado el control, y la cuenta del CEO interino se desactivó por arte de birlibirloque. Él apunta a que detrás de la maniobra estaría Silver Lake, el fondo que está tras WP Engine, aunque eso es una acusación suya que no ha confirmado nadie.</p>
<p>Lo bueno, y esto es importante, es que <strong>todo esto afecta a Automattic, la empresa, no a WordPress.org, el proyecto</strong>. De hecho, en paralelo se nombró a Mary Hubbard directora ejecutiva del proyecto WordPress, que es como debería ser. La empresa por un lado y el proyecto por otro.</p>
<p>¿Mi opinión, que a nadie le importa pero te la doy? Que Mullenweg no debería ser CEO, pero eso tendría que decidirlo él, dejar la empresa en otras manos y dedicarse al proyecto WordPress, hacer un Linus Torvalds. Y sobre todo, que <strong>las cosas no se hacen así, tengas o no tengas razón</strong>. Ya avisé de que esto duraría poco, como pasó con Steve Jobs o con Sam Altman en OpenAI, que al final acaban volviendo. Matt, tómate unas vacaciones de verdad, que te apreciamos, pero deja las peleas con WP Engine en casa.</p>
<p>Tienes las Crónicas WordPress completas aquí: <a href="https://www.youtube.com/watch?v=W2Nn-0h20SE">Seguridad, WordPress 7.1.1, WooCommerce y el culebrón de Automattic – #CrónicasWordPress</a>.</p>
<div class="ast-oembed-container " style="height: 100%;"><iframe title="100% de resultados que se comen las AI Overviews, la crisis de Automattic con Matt Mullenweg y más…" width="1600" height="900" src="https://www.youtube.com/embed/W2Nn-0h20SE?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: qué son los llms.txt y para qué sirven (si es que sirven)</h2>
<p>En el Doctor de esta semana me metí con una pregunta que me hacéis mucho, qué son los famosos archivos <strong>llms.txt</strong> y <strong>llms-full.txt</strong>, esos que ves por ahí y que yo llevo tiempo sirviendo en mis plugins.</p>
<h3>Qué son y quién se los inventó</h3>
<p>Un llms.txt es, ni más ni menos, un archivo de texto en formato Markdown que le dice a los agentes de IA cuál es el contenido de tu web y cómo está estructurado. La idea la propuso Jeremy Howard, va ya por la versión 2 (de agosto de 2026) y funciona como <strong>una especie de índice limpio de tu sitio pensado para que los modelos de lenguaje se lo lean rápido</strong>. El llms.txt es el listado, y el llms-full.txt va más allá y sirve el contenido completo de cada página, o un extracto, según lo configures.</p>
<p>¿Que por qué en Markdown? Pues porque es el formato que mejor leen estos modelos, muy limpio y ligero (y, por cierto, WordPress también entiende Markdown, tanto en el editor de bloques como en el clásico).</p>
<h3>¿Sirve de algo? ¿Lo lee alguien?</h3>
<p>Google dice que no los tiene en cuenta, que para eso está el robots.txt y el mapa del sitio. Y es verdad que <strong>el llms.txt no sustituye a ninguno de los dos</strong>, cada cosa va a lo suyo y siguen conviviendo. Pero la adopción no para de crecer, Wix genera uno para cada sitio y cada vez más plugins lo incorporan.</p>
<p>Te cuento lo que veo yo con datos reales, midiendo Ayuda WordPress con mi plugin Vigía. A día de hoy, la página que más visitan los bots de IA cuando descubren tu web sigue siendo el mapa del sitio, y a partir de ahí se lo leen todo, sistemáticos, página por página (más que indexar, almacenan, como bibliotecarios que lo guardan todo sin priorizar hasta que alguien pregunta). Pero últimamente <strong>ya los veo buscar y leerse el llms.txt</strong>, y si encuentran el llms-full, también. Como pesa menos y se lee más rápido que un mapa del sitio, apostaría a que esa tendencia va a más.</p>
<h3>Cómo lo montas en WordPress sin instalar un plugin solo para esto</h3>
<p>Aquí va mi consejo principal, el que quiero que te lleves. <strong>No instales un plugin específico solo para generar el llms.txt</strong>. Es un puñetero archivo de texto, hay cientos de plugins que hacen solo eso y no merece la pena. Lo suyo es que lo genere el plugin de SEO que ya tengas, porque muchos ya lo hacen (y alguno, como All in One SEO, te lo guardaba para la versión premium, que ya me contarás en qué cabeza cabe cobrar por un fichero de texto).</p>
<p>En el directo lo enseñé con mis dos plugins, los dos gratis del todo. Vigía es de analítica y control de visibilidad ante las IA, y te genera el llms.txt, te gestiona el robots.txt, te bloquea rastreadores y te da estadísticas de qué bots de IA visitan tu web y cuánto. Y Visibility es un plugin de SEO completo y gratuito. Cuando tienes los dos, <strong>se coordinan solos para no duplicarte los archivos</strong>, que Vigía se aparta y deja que Visibility lleve la voz cantante, y así no acabas con dos llms.txt peleándose.</p>
<p>Y quédate con esto. Si quieres un llms.txt, tira del plugin de SEO que ya uses, y si es Visibility mejor, que es gratis del todo, en vez de instalar uno específico para la tontería. Y si no lo quieres, tampoco pasa nada, que nadie te obliga. No es un estándar oficial, pero es una propuesta que se adopta cada vez más, así que no la pierdas de vista.</p>
<p>Tienes el Doctor WordPress completo aquí: <a href="https://www.youtube.com/watch?v=6ASIeLkB1GI">Qué son los archivos llms.txt y llms-full.txt y cómo crearlos en WordPress – #DoctorWordPress</a>.</p>
<div class="ast-oembed-container " style="height: 100%;"><iframe title="LLMS.txt y LLMS-FULL.txt ¿Qué son esos archivos de IA? ¿Sirven de algo?¿Cómo se crean en WordPress?" width="1600" height="900" src="https://www.youtube.com/embed/6ASIeLkB1GI?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" rel="nofollow">en el canal de Ayuda WordPress</a>. 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/wordpress-7-1-1-al-caer-el-culebron-de-automattic-y-que-punetas-son-los-llms-txt-cronicaswordpress-doctorwordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Auditoría SEO / GEO (online y gratis) para webs WordPress</title>
		<link>https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/</link>
					<comments>https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 06:28:12 +0000</pubDate>
				<category><![CDATA[SEO / AEO / GEO / AIO]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[AI Share & Summarize]]></category>
		<category><![CDATA[Content Signals]]></category>
		<category><![CDATA[DietPress]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[VigIA]]></category>
		<category><![CDATA[Visibility]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160201</guid>

					<description><![CDATA[Ya tienes una auditoría SEO y GEO gratis para tu web WordPress. Más de 40 comprobaciones, sin registro ni email, sin pagar. Y si quieres un análisis más completo, cerca de 100 comprobaciones, lo pides, también gratis.]]></description>
										<content:encoded><![CDATA[<p>Ya tienes una <strong>auditoría SEO gratis para tu web WordPress</strong> en <a href="https://herramientas.ayudawp.com/auditoria-seo/">herramientas.ayudawp.com/auditoria-seo/</a>. Metes la URL del sitio que quieras auditar, esperas un minuto y sale un informe con más de 40 comprobaciones, sin registrarte y sin dejar tu email, sin pagar nada. Y si quieres el análisis completo, con cerca de 100 comprobaciones, me lo pides desde el propio informe y te lo hago yo, también gratis.</p>
<p>Llevo años diciendo que las herramientas de auditoría SEO gratuitas que hay por ahí sirven para bien poco, pero ¿esta sirve de algo?, pues aunque no lo sepas ya estás disfrutando de ella ¿no te lo crees?, lee… que hay una historia detrás…</p>
<h2>El cliente que echó a su empresa de SEO…</h2>
<p>Esto empezó en una reunión de mentoría con un cliente del <a href="https://mantenimiento.ayudawp.com/">servicio de mantenimiento</a>. Las hacemos con todos al entrar, y luego siempre que hagan falta, porque una de las cosas que más nos agradecen los clientes es justo esa. que <strong>no solo mantenemos webs, también echamos una mano para que la web funcione mejor</strong>, y eso incluye seguridad, rendimiento y SEO, sin coste añadido salvo tareas muy especiales.</p>
<p>En esa primera reunión le pasé el informe inicial que hacemos siempre, y ahí, entre las cosas a mejorar, se veía a la legua que <strong>la empresa de SEO que tenía contratada le hacía entre poco y nada</strong>. Nosotros no somos una empresa de SEO, es verdad, pero los básicos de descubrimiento e indexación los miramos igual, y ayudamos a mejorarlos, y esos básicos cantaban por sí solos, para mal. El cliente lo vio y me pidió un informe más a fondo.</p>
<p><strong>No me dedico al SEO</strong>, no hago ese servicio como tal, pero llevo más de 20 años trabajando en Internet, he contratado a unos cuantos SEO para mis propias empresas, he leído una montaña de informes ajenos, he analizado un montón de webs y he hecho mucho SEO de contenidos durante años. Y creo que algo de idea tengo al respecto, de hecho llevo viviendo de ello bastante tiempo, y eso se parece a un currículum ¿no?.</p>
<p>Así que me puse, analicé su web al completo y le preparé un informe en profundidad. <strong>Al día siguiente echó a su empresa de SEO y me pidió que le lleváramos nosotros el servicio.</strong></p>
<p>Que conste que <strong>hay empresas de SEO buenísimas</strong> y no va de eso la cosa, sino de que su empresa llevaba meses pagando sin que nadie le enseñara un informe que se sirviese de algo, ni compromiso alguno, ni trabajos que significasen algo medible, y <strong>en cuanto vio cosas que se podían hacer, explicadas, y un plan de acción, tuvo claro lo que estaba pasando</strong>.</p>
<p>Por supuesto, le entregué el informe para que hiciese con él lo que quisiera, incluso ofrecerlo sin restricciones a la empresa de SEO, pero <strong>parece ser que llevar meses pagando por nada le abrió un poco los ojos</strong>, y bueno, estamos en ello, ayudándole a corregir errores de años y a mejorar el descubrimiento e indexación de su web (tienda online en realidad).</p>
<p>Luego, como soy como soy, se me quedó la idea dando vueltas y me dije «…<em><strong>si un informe bien hecho vale para eso, ¿por qué no puede tenerlo cualquiera?</strong></em>…». Pues eso he montado y te presento hoy.</p>
<p>La parte que se puede automatizar, online y a voluntad para todo el mundo, y luego, la parte que exige criterio, valoración razonada, a veces incluso datos internos de la web, esa si quieres te la hago yo, también gratis y sin compromiso ninguno. La pides y encantado de la vida.</p>
<h2>Auditoría SEO y GEO exprés: 43 comprobaciones gratis en un minuto</h2>
<p>Metes la dirección de tu web y esperas. No hay registro, no hay correo, no hay «déjanos tu email para ver el resultado». Sale el informe y ya está, lo puedes descargar en PDF, imprimirlo, o compartirlo en tus redes sociales, mandártelo por email (con URL única y privada personalizada).</p>
<p>Está aquí: <a href="https://herramientas.ayudawp.com/auditoria-seo/">herramientas.ayudawp.com/auditoria-seo/</a></p>
<p>Lo que hace en un minuto o menos:</p>
<ul>
<li>Se lee tu <code>robots.txt</code> entero y te dice si hay grupos duplicados, erratas o bloqueos que se pisan con el <code>noindex</code>.</li>
<li>Rastrea el índice de sitemaps y hasta 3.000 URLs, y te cuenta qué hay dentro, cuánto está sin fecha de modificación y cuántas direcciones no tienen ningún valor de búsqueda.</li>
<li>Abre diez páginas de verdad, repartidas entre los tipos de contenido que publicas, con el agente de Googlebot, y mide lo que se encuentra el rastreador de verdad y no lo que se encuentra en la portada cacheada.</li>
<li>Valida los datos estructurados de esas páginas, mira las cabeceras del servidor, comprueba las señales para agentes de IA y cronometra la respuesta.</li>
</ul>
<p>Son <strong>43 comprobaciones con veredicto</strong>, cada una con su explicación de qué se juega tu negocio en ella, qué hacer para arreglarla y, cuando toca, con qué plugin.</p>
<p><a href="https://ayudawp.com/?attachment_id=160231" rel="nofollow"><img fetchpriority="high" decoding="async" class="sombra alignnone wp-image-160231 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-express-gratis-resultado-1200x2658.jpg" alt="" width="1200" height="2658" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-express-gratis-resultado-1200x2658.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-express-gratis-resultado-768x1701.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-express-gratis-resultado-693x1536.jpg 693w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-express-gratis-resultado-925x2048.jpg 925w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-express-gratis-resultado.jpg 1920w" sizes="(max-width: 1200px) 100vw, 1200px"></a></p>
<h3>Lo que no hace la auditoría exprés</h3>
<p>Todas las herramientas gratuitas de este tipo tienen el mismo problema, y es que te dejan con la duda. Sale una nota de 78 sobre 100 y tú te quedas mirando la pantalla pensando «vale, ¿y el 22 que falta?». Nunca te dicen si el 22 es porque tu web tiene fallos o porque la herramienta no ha mirado ahí.</p>
<p>Aquí no, <strong>al final de cada bloque tienes la lista de lo que esa herramienta no mira</strong>, con nombre, apellidos y por qué le importa a tu negocio.</p>
<p>Son <strong>55 comprobaciones que se llaman por su nombre y se declaran fuera</strong>. Cosas como el censo de directivas de indexación de todas las URLs, el árbol completo de categorías con sus conflictos padre-hija, o el cruce con la cobertura real de tu Search Console.</p>
<p><a href="https://ayudawp.com/?attachment_id=160233" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160233 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/hallazgos-auditoria-seo-para-pedir-analisis-a-fondo-1200x716.jpg" alt="" width="1200" height="716" srcset="https://ayudawp.com/wp-content/uploads/2026/09/hallazgos-auditoria-seo-para-pedir-analisis-a-fondo-1200x716.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/hallazgos-auditoria-seo-para-pedir-analisis-a-fondo-768x458.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/hallazgos-auditoria-seo-para-pedir-analisis-a-fondo-1536x916.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/hallazgos-auditoria-seo-para-pedir-analisis-a-fondo.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>No es un truco de venta, es que <strong>me niego a que la herramienta prometa cosas que no hace</strong>. Si mira diez páginas, dice que mira diez páginas, si necesita tu Search Console para responder algo, lo dice en esa misma tarjeta.</p>
<h2>Auditoría SEO y GEO a fondo: 100 comprobaciones, también gratis</h2>
<p>Aquí es donde la cosa se pone interesante. Debajo de cada bloque del informe exprés hay un botón para pedir la auditoría completa, y el formulario ya lleva dentro lo que se ha encontrado, así que no tienes que explicarme nada.</p>
<p><a href="https://ayudawp.com/?attachment_id=160234" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160234 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/formulario-pedir-auditoria-seo-a-fondo-gratis-1200x569.jpg" alt="" width="1200" height="569" srcset="https://ayudawp.com/wp-content/uploads/2026/09/formulario-pedir-auditoria-seo-a-fondo-gratis-1200x569.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/formulario-pedir-auditoria-seo-a-fondo-gratis-768x364.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/formulario-pedir-auditoria-seo-a-fondo-gratis-1536x729.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/formulario-pedir-auditoria-seo-a-fondo-gratis.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>La a fondo son <strong>98 comprobaciones</strong> en lugar de 43, la hago yo con las herramientas internas que usamos para nuestros clientes, y sale un informe en PDF de treinta y tantas páginas con resumen ejecutivo, hallazgos ordenados por lo que más rinde al arreglarse y anexos con las direcciones concretas.</p>

<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-salud/" rel="nofollow"><img width="1200" height="1354" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-salud-1200x1354.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-salud-1200x1354.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-salud-768x866.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-salud-1362x1536.jpg 1362w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-salud-1815x2048.jpg 1815w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-salud.jpg 1920w" sizes="(max-width: 1200px) 100vw, 1200px" decoding="async" fetchpriority="high"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-resumen-ejecutivo/" rel="nofollow"><img width="1200" height="921" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-resumen-ejecutivo-1200x921.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-resumen-ejecutivo-1200x921.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-resumen-ejecutivo-768x589.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-resumen-ejecutivo-1536x1178.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-resumen-ejecutivo.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-hallazgos/" rel="nofollow"><img width="1200" height="1196" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-hallazgos-1200x1196.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-hallazgos-1200x1196.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-hallazgos-150x150.jpg 150w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-hallazgos-768x766.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-hallazgos-1536x1531.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-hallazgos.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-alcance/" rel="nofollow"><img width="1200" height="651" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-alcance-1200x651.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-alcance-1200x651.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-alcance-768x416.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-alcance-1536x833.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-alcance.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-que-implica/" rel="nofollow"><img width="1200" height="716" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-implica-1200x716.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-implica-1200x716.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-implica-768x458.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-implica-1536x917.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-implica.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-que-medir-soluciones/" rel="nofollow"><img width="1200" height="1631" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-medir-soluciones-1200x1631.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-medir-soluciones-1200x1631.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-medir-soluciones-768x1044.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-medir-soluciones-1130x1536.jpg 1130w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-medir-soluciones-1507x2048.jpg 1507w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-que-medir-soluciones.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-plan-accion-fase-1/" rel="nofollow"><img width="1200" height="1748" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-1-1200x1748.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-1-1200x1748.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-1-768x1118.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-1-1055x1536.jpg 1055w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-1-1406x2048.jpg 1406w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-1.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3/" rel="nofollow"><img width="1200" height="1361" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3-1200x1361.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3-1200x1361.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3-768x871.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3-1354x1536.jpg 1354w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3-1805x2048.jpg 1805w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-plan-accion-fase-2-y-3.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/auditoria-seo-geo-a-fondo-anexos/" rel="nofollow"><img width="1200" height="1206" src="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-anexos-1200x1206.jpg" class="attachment-medium size-medium" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-anexos-1200x1206.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-anexos-150x150.jpg 150w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-anexos-768x772.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-anexos-1528x1536.jpg 1528w, https://ayudawp.com/wp-content/uploads/2026/09/auditoria-seo-geo-a-fondo-anexos.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px" loading="lazy" decoding="async" fetchpriority="low"></a>

<h3>Seguro que aquí ya me pides pasta o algo ¿no?</h3>
<p><strong>¡Que nooo, que ya te he dicho que ambas auditorías son gratis!</strong></p>
<p>Pero ocho de esas 98 comprobaciones no se pueden hacer desde fuera ni queriendo, porque son datos que solo tienes tú:</p>
<ul>
<li>Informe exportado de tu Search Console, que es lo único que dice qué URLs están descubiertas sin indexar y por qué motivo exacto.</li>
<li>Exportación de redirecciones del plugin Redirection, o de lo que uses para gestionar redirecciones, para repasar las cadenas y los bucles que se van acumulando solos.</li>
<li>Exportación de la configuración de tu plugin SEO, sea Yoast, Rank Math, AIOSEO o SEOPress, que es donde suele estar el interruptor que lo explica todo o casi.</li>
</ul>
<p>Si no me los das, no pasa nada, el informe sale igual y esas ocho aparecen diciendo que no se han podido comprobar. <strong>Lo que no voy a hacer nunca es rellenar un hueco con una suposición y presentártelo como un hallazgo ¿vale?.</strong></p>
<h2>¿Y si lo quiero arreglar yo por mi cuenta?</h2>
<p>Claro, pues lo arreglas y ya está, que para eso cada comprobación del informe te dice qué hacer. Y donde hace falta un plugin la herramienta te recomienda los mejores, y <strong>solo te lo recomienda cuando esa comprobación te ha salido mal</strong>. Si esa parte de tu web está bien no te aparece ningún plugin, ni te lo menciono, ni te doy la brasa, solo información.</p>
<p>Los plugins que vas a ver que recomiendo según lo que necesites son cuatro, los cuatro desarrollados por mi, los cuatro gratis y los cuatro en el repositorio oficial de WordPress.org sin versión premium, completos:</p>
<ul>
<li><strong><a href="https://es.wordpress.org/plugins/native-aeo-pack/">Visibility</a></strong>, para casi todo lo de descubrimiento e indexación: el sitemap nativo, el robots.txt virtual, las etiquetas Open Graph y los datos estructurados tipo por tipo de contenido, todo desde un mismo sitio.</li>
<li><strong><a href="https://es.wordpress.org/plugins/vigia/">VigIA</a></strong>, para la parte de IA: te genera el llms.txt, lo mantiene al día y te enseña qué bots están pasando de verdad por tu web y qué se llevan.</li>
<li><strong><a href="https://es.wordpress.org/plugins/wpo-tweaks/">DietPress</a></strong>, para cuando lo que sale en rojo es el tiempo de respuesta, el peso del HTML o los cuarenta ficheros que carga la portada.</li>
<li><strong><a href="https://es.wordpress.org/plugins/ai-content-signals/">AI Content Signals</a></strong>, para declarar en el robots.txt si tu contenido se puede usar para entrenar modelos, para buscar o para responder.</li>
</ul>
<p>Y si lo que te preocupa es la parte de IA, el bloque correspondiente de la auditoría enlaza a nuestro <a href="https://herramientas.ayudawp.com/ai-visibility/">analizador de visibilidad IA</a>, que también es gratis y va más a fondo en eso concreto. De ahí sale la quinta recomendación, <strong><a href="https://es.wordpress.org/plugins/ai-share-summarize/" target="_blank" rel="nofollow noopener">Share Buttons &amp; AI-powered Summaries</a></strong>, que te pone botones para compartir tu contenido en redes y también en las IAs.</p>
<p>Lo segundo suena raro hasta que caes en que <strong>cada vez que alguien le pasa tu artículo a ChatGPT o a Claude estás metiendo tu web en una conversación donde antes no estabas</strong>, y de ahí salen menciones.</p>
<p>Y por supuesto, <strong>buena parte de lo que salga en el informe lo resuelve también el plugin SEO que ya tengas puesto</strong>, sea Yoast, Rank Math, AIOSEO o SEOPress. Si ya tienes uno mira ahí primero antes de instalar nada. Sumar plugins por sumar no arregla nada, y lo he dicho unas cuantas veces por aquí, y sí, los míos son mejores, y gratis del todo, pero vamos, que lo bueno es que hay para elegir.</p>
<h2>En serio, ¿ por qué es gratis?</h2>
<p>Me dedico, entre otras cosas, al <a href="https://mantenimiento.ayudawp.com/">mantenimiento de webs WordPress</a> y a resolverle problemas de seguridad, rendimiento y posicionamiento a quien los tiene, que para eso está <a href="https://servicios.ayudawp.com/">servicios.ayudawp.com</a>.</p>
<p><strong>La auditoría es lo que hago igualmente cuando entra un cliente nuevo</strong>, así que hacértela sin cobrar me cuesta un rato de trabajo y me sirve para dos cosas:</p>
<ul>
<li>Que puedas ver cómo trabajamos por si algún día te animas a colaborar con nosotros.</li>
<li>Para que, si quieres, nos encarguemos de ejecutar el plan, y sepas exactamente qué estás delegando.</li>
</ul>
<p>Pero eso es una posibilidad, no te comprometes a nada, como te he dicho es totalmente gratis. Si te llevas el informe y lo arreglas todo tú, me parece perfecto y no te voy a perseguir con correos.</p>
<p>Por otro lado, si el informe no te convence, tampoco vas a contratar, así que el filtro funciona en las dos direcciones. De paso te llevas un montón de información valiosa de tu web, y no has soltado ni un euro, .</p>
<h2>Qué cosas tiene la vida, y es que por si no lo sabías„ esta herramienta ya te ha ayudado antes incluso de conocerla</h2>
<p>Mientras montaba la herramienta de informes de auditoría se me quedó una comprobación en rojo en mis propios subdominios, diciendo que el mapa del sitio respondía con un 404. Y yo mirándolo en el navegador, viendo el XML perfecto, pensando que la herramienta estaba mal.</p>
<p>Pues no estaba mal. Resulta que <strong>WordPress sirve el sitemap nativo con código 404 cuando el sitio no tiene ninguna entrada publicada</strong>, porque pinta el XML sin fijar su propio estado y hereda el de la consulta principal. En el navegador se ve perfecto y en Search Console figura como no leído, así que a efectos de descubrimiento es como no tener sitemap.</p>
<p>Está reportado en el Trac de WordPress con el <a href="https://core.trac.wordpress.org/ticket/65945" rel="noopener">ticket #65945</a>, y te lo cuento con detalle en <a href="https://ayudawp.com/404-wp-sitemap-xml/">por qué tu <code>wp-sitemap.xml</code> devuelve un 404 y cómo arreglarlo</a>. No sé si la solución estará en WordPress 7.1.1 o en la 7.2, pero <strong>está en camino y arreglará un problemón de SEO que tenía WordPress y que la auditoría detectó</strong>, sin pretenderlo.</p>
<p>Eso es exactamente <strong>el tipo de cosa que no ves mirando tu web, que ninguna herramienta de semáforos te va a decir, y que te está costando indexación</strong> desde hace meses. Pues mira tú por donde, <strong>una auditoría SEO gratuita lo ha detectado, y es algo de lo que se van a beneficiar todos los usuarios de WordPress</strong>, antes incluso de estar disponible la herramienta.</p>
<h2>¿Tiene algún límite la auditoría SEO exprés?</h2>
<p>Alguno, básicamente para que no me tiren abajo el servidor y poco más, te lo resumo:</p>
<ul>
<li>Se pueden analizar cinco dominios distintos al día desde la misma conexión. Es para que nadie use esto de rastreador gratuito, y si necesitas más, pídeme la a fondo y listo.</li>
<li>El informe exprés se guarda seis meses con un enlace propio, así que lo puedes compartir con quien lleve tu web sin que caduque a los dos días, pero tampoco lo guardes para «un año de estos», pues además ya no servirá de nada.</li>
<li>La muestra que realiza la auditoría exprés son diez páginas, no es el sitio entero y en ningún momento te digo que lo sea, pero te sorprenderá lo que vas a aprender de ello.</li>
</ul>
<p>Que recuerde nada más, eso es lo único. Bueno, y que son 43 comprobaciones, si quieres muchas más pide la auditoría a fondo, también gratis.</p>
<h2>¿Por dónde empiezo para auditar gratis el SEO de mi web?</h2>
<p>Pues lo que yo haría, en este orden:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Pasar la exprés a tu web y leerte el bloque que sale abierto, que es el que tiene el problema más gordo.</li>
<li>Arreglar por tu cuenta lo que puedas, que si hace falta plugin te dice cuál y son todos gratis.</li>
<li>Bajar hasta el final de cada bloque y mirar la lista de lo que no se ha comprobado, porque ahí suele estar lo que llevas tiempo sin revisar.</li>
<li>Si algo de eso te preocupa pedir la a fondo desde el mismo informe. Tardo lo que tarde, dependiendo de la demanda, pero llega.</li>
</ol>
</li>
</ol>
<p>Y si la pasas y te sale algo que no entiendes, o que crees que está mal medido, me tienes ahí abajo en los comentarios. La herramienta lleva semanas cambiando precisamente porque la he ido probando contra webs reales y me he ido encontrando fallos míos por el camino, así que cualquier cosa rara que veas me interesa de verdad, que cuantos más análisis mejor para ir mejorando los informes.</p>
<p>Tú prueba, que no cuesta nada, de verdad.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/auditoria-seo-geo-online-gratis-wordpress/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Impuestos en WooCommerce: guía de cómo YO conseguí configurarlos bien</title>
		<link>https://ayudawp.com/configurar-impuestos-woocommerce/</link>
					<comments>https://ayudawp.com/configurar-impuestos-woocommerce/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 06:28:14 +0000</pubDate>
				<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[IVA]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160068</guid>

					<description><![CDATA[En esta guía sobre cómo configurar impuestos en WooCommerce explico de manera ordenada y sencilla qué hace cada ajuste, qué cambia según lo que elijas y qué puede fallar.]]></description>
										<content:encoded><![CDATA[<p>La pantalla de <strong>impuestos de WooCommerce</strong> da más quebraderos de cabeza de los que debería, y no es por la cantidad de opciones, que tampoco son tantas, sino porque unas dependen de otras y algunas viven en pantallas distintas.</p>
<p>En esta guía he tratado de explicar de manera ordenada y sencilla <strong>qué hace cada ajuste importante, qué cambia según lo que elijas y dónde está el fallo cuando los precios no salen como esperabas</strong>.</p>
<p>Todo lo que tienes en este artículo es configuración de WooCommerce tal cual viene de serie, sin plugins adicionales. Y lo siento, no soy asesor fiscal, esto explica cómo funciona el software, pero no qué tienes que cobrar ni cuándo, así que para las dudas fiscales habla con tu gestoría.</p>
<p>El grueso del artículo cubre lo que necesita cualquier tienda española que venda a consumidor final dentro de España. Luego, al final, hay un bloque de casos especiales (recargo de equivalencia, retenciones de autónomos, Canarias, ventas a la Unión Europea, productos digitales) que solo tienes que leer si te afecta.</p>
<h2>Activa los impuestos ¿a que se te había olvidado?</h2>
<p>Si acabas de instalar WooCommerce puede que ni siquiera veas la pestaña de impuestos, y no es que se haya perdido. Está desactivada por defecto.</p>
<p>Vete a «<strong>WooCommerce &gt; Ajustes &gt; General</strong>», busca la sección de impuestos y marca la casilla «<strong>Activar tasas de impuestos y sus cálculos</strong>». En cuanto guardes te aparece una pestaña nueva llamada «<strong>Impuesto</strong>» arriba, junto al resto.</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160207 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/activar-impuestos-woocommerce-1200x274.jpg" alt="" width="1200" height="274" srcset="https://ayudawp.com/wp-content/uploads/2026/09/activar-impuestos-woocommerce-1200x274.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/activar-impuestos-woocommerce-768x175.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/activar-impuestos-woocommerce-1536x350.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/activar-impuestos-woocommerce.jpg 1570w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Parecerá una bobada pero es la duda que más se repite en los foros de soporte y se resuelve en dos clics. ¿Ya?, pues empezamos.</p>
<h2>Precios con impuestos incluidos o sin ellos, la decisión que más cuesta deshacer</h2>
<p>El <strong>primer ajuste de la pestaña de impuestos</strong> es también el que más te va a condicionar, porque <strong>afecta a cómo introduces todos los precios de todos tus productos</strong>.</p>
<p>Tienes dos opciones, o introduces los precios con los impuestos ya incluidos, y WooCommerce calcula hacia atrás cuánto de ese precio es base y cuánto impuesto, o introduces los precios sin impuestos y WooCommerce los suma luego.</p>
<p><a href="https://ayudawp.com/?attachment_id=160214" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160214 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-1200x779.jpg" alt="" width="1200" height="779" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-1200x779.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-768x499.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-1536x998.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Con números se ve mejor, lo vemos. Imagina un producto que quieres que le cueste al cliente <strong>9,99 €</strong> con el IVA general del 21 % incluido.</p>
<ul>
<li>Si eliges <strong>precios con impuestos incluidos</strong>, escribes 9,99 € en la ficha del producto y WooCommerce descompone ese importe en 8,26 € de base imponible y 1,73 € de IVA.</li>
<li>Si eliges <strong>precios sin impuestos</strong>, escribes 8,26 € en la ficha del producto y WooCommerce le suma el 21 % hasta llegar a esos mismos 9,99 €.</li>
</ul>
<p>El resultado final es el mismo, pero el número que tú tecleas es distinto, y ahí es donde te puedes liar tú, y liar a tus clientes como te líes ¿vaya lío, no?</p>
<p><strong>Si cambias esta opción cuando ya tienes el catálogo cargado, todos tus precios cambian de golpe</strong> y en la dirección contraria a la que esperas, porque los 9,99 € que habías metido pensando que llevaban IVA pasan a ser una base a la que ahora se le suma un 21 % encima, y el producto se le queda al cliente en 12,09 €.</p>
<p>Para una tienda que vende a consumidor final en España lo habitual es trabajar con precios con impuestos incluidos, porque es lo que el cliente espera ver y porque la ley de consumo obliga a mostrar el precio final. Si vendes a profesionales y tu catálogo va sin IVA, la otra opción tiene más sentido.</p>
<p>Y luego está la comodidad, la otra derivada, porque si te decides por poner en tus productos los precios con impuestos incluidos y un día el gobierno te cambia el IVA (por ejemplo) te toca modificar todos los precios uno a uno, variaciones incluidas, mientras que si elegiste crearlos con el precio antes de impuestos solo tendrías que cambiar el impuesto en los ajustes de impuestos. Valóralo también ¿vale?</p>
<p>Ya te dije que esto es un poco lioso, así que <strong>dale una pensada antes de decidirte, pero sobre todo haz pruebas siempre</strong> tras cualquier cambio, y hazlas como cliente, y completas.</p>
<h2>En base a qué ubicación se calculan los impuestos</h2>
<p>Este es el punto donde se atasca prácticamente todo el mundo, yo incluido, que lo tengo que pensar siempre un par de veces, y es que el síntoma es siempre el mismo, impuestos que no salen, o salen mal o cambian de repente.</p>
<p>La causa <strong>está repartida entre dos pantallas distintas que además no están ni siquiera cerca</strong>. Intuitivo ¿eh?</p>
<h3>Las tres opciones de cálculo</h3>
<p>En la pestaña de ajustes de impuestos (<strong>Impuesto</strong>) tienes un desplegable con tres posibilidades:</p>
<ul>
<li><strong>Dirección de envío del cliente</strong>: es la opción por defecto y aplica el impuesto que corresponda al sitio adonde va el paquete.</li>
<li><strong>Dirección de facturación del cliente</strong>: aplica el impuesto del sitio que el cliente haya puesto como dirección de facturación, aunque el envío vaya a otro lado.</li>
<li><strong>Dirección base de la tienda</strong>: aplica siempre tu impuesto, el de donde tú estás, el de la dirección a la que configuraste tu tienda, sin mirar dónde está el cliente.</li>
</ul>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160209 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-basado-en-1200x349.jpg" alt="" width="1200" height="349" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-basado-en-1200x349.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-basado-en-768x223.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-basado-en.jpg 1384w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p><strong>Las dos primeras solo funcionan bien cuando el cliente ha rellenado ese dato</strong>, con lo cual no hacen ningún cálculo mientras el visitante está mirando la tienda sin haber puesto todavía una dirección. Y ahí es donde entra la segunda pantalla de la que te hablaba antes.</p>
<h3>Qué pasa con los impuestos antes de que el cliente diga dónde vive, y la madre que los parió a todos los que diseñan los ajustes de WooCommerce que, por supuesto, no tienen que vivir con ello</h3>
<p>El desplegable anterior decide qué dirección usar <em>una vez que WooCommerce la conoce</em>, pero <strong>mientras el visitante simplemente está curioseando productos WooCommerce no tiene ni idea de dónde está</strong>, ni por supuesto qué impuestos mostrar, así que necesita partir de alguna suposición.</p>
<p><strong>Esa suposición se configura en un sitio completamente distinto</strong>, en «<strong>WooCommerce &gt; Ajustes &gt; General &gt; Ubicación del cliente por defecto</strong>», y es <strong>la causa real de la mayoría de los problemas de impuestos</strong> que la gente atribuye al ajuste anterior.</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160210 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-cliente-por-defecto-1200x390.jpg" alt="" width="1200" height="390" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-cliente-por-defecto-1200x390.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-cliente-por-defecto-768x249.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-cliente-por-defecto.jpg 1330w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Las opciones que tienes ahí y qué provoca cada una:</p>
<ul>
<li><strong>Sin ubicación por defecto</strong>: WooCommerce no supone nada, así que hasta que el visitante no dé una dirección es fácil que no se muestre ningún impuesto en la ficha de producto. Este es el famoso «<strong>no me sale el IVA en la tienda</strong>».</li>
<li><strong>País/región de la tienda</strong>: da por hecho que el visitante está donde estás tú hasta que diga lo contrario. Es la que menos sorpresas da si vendes sobre todo en España.</li>
<li><strong>Geolocalizar</strong>: detecta el país del visitante por su IP desde el primer momento. Ojo con esta si tienes caché de página, porque si el servidor está sirviendo la misma página guardada a todo el mundo, la detección puede no reflejarse.</li>
<li><strong>Geolocalizar (compatible con caché de página)</strong>: hace lo mismo pero resolviendo la detección por otra vía para que la caché no se la coma. Es la que hay que usar si quieres geolocalizar y tienes caché, que en un hosting decente la tienes seguro.</li>
</ul>
<p>Con esto ya puedes explicarte el síntoma más desesperante de todos, <strong>que en la ficha de producto veas un precio y al llegar al carrito o al finalizar la compra te salga otro distinto</strong>. Pasa cuando la ubicación que WooCommerce estaba suponiendo no coincide con la dirección real que el cliente acaba metiendo, y entonces recalcula.</p>
<p>Para la mayoría de tiendas españolas <strong>la pareja de ajustes que menos incidencias da</strong> es dejar la ubicación por defecto en <strong>País/región de la tienda</strong> y el cálculo en <strong>Dirección de envío del cliente</strong>. Con esta configuración <strong>el visitante ve desde el primer momento un precio con el IVA español, y si resulta que compra desde otro sitio, se recalcula al meter la dirección</strong>.</p>

<a href="https://ayudawp.com/configurar-impuestos-woocommerce/woocommerce-calcular-impuesto-direccion-envio-cliente/" rel="nofollow"><img width="1344" height="136" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-direccion-envio-cliente.jpg" class="attachment-large size-large" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-direccion-envio-cliente.jpg 1344w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-direccion-envio-cliente-1200x121.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-calcular-impuesto-direccion-envio-cliente-768x78.jpg 768w" sizes="auto, (max-width: 1344px) 100vw, 1344px" loading="lazy" decoding="async" fetchpriority="low"></a>
<a href="https://ayudawp.com/configurar-impuestos-woocommerce/woocommerce-ubicacion-defecto-cliente-pais-region-tienda/" rel="nofollow"><img width="1334" height="146" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-defecto-cliente-pais-region-tienda.jpg" class="attachment-large size-large" alt="" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-defecto-cliente-pais-region-tienda.jpg 1334w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-defecto-cliente-pais-region-tienda-1200x131.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ubicacion-defecto-cliente-pais-region-tienda-768x84.jpg 768w" sizes="auto, (max-width: 1334px) 100vw, 1334px" loading="lazy" decoding="async" fetchpriority="low"></a>

<h2>Clases de impuesto, una etiqueta para agrupar productos</h2>
<p>WooCommerce trae tres clases de impuesto de fábrica, que son <strong>Estándar</strong>, <strong>Tasa reducida</strong> y <strong>Tasa cero</strong>. Cada clase tiene su propia tabla de tasas independiente, y cada producto se asigna a una de ellas desde su ficha, en la pestaña general de los datos del producto.</p>
<p><a href="https://ayudawp.com/?attachment_id=160214" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160214 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-1200x779.jpg" alt="" width="1200" height="779" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-1200x779.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-768x499.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos-1536x998.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tasas-impuestos.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Puedes añadir las clases que necesites escribiéndolas en el campo correspondiente de la pantalla de opciones, una por línea. En cuanto guardes te aparecen como subpestañas nuevas en la parte de arriba, junto a las que ya había, y cada una con su tabla vacía esperando a que le metas tasas.</p>
<p><strong>Para una tienda española normal no necesitas crear ninguna clase adicional</strong>, porque los tres tipos de IVA que existen encajan directamente en las tres que ya vienen. El general va en Estándar, el reducido en Tasa reducida y el superreducido lo puedes meter en Tasa cero renombrándola mentalmente, o crear una clase nueva llamada Superreducido si prefieres tenerlo claro al mirar la ficha de un producto.</p>
<h2>La tabla de tasas de impuestos, columna por columna</h2>
<p>Aquí es donde se define de verdad qué se cobra. Entras en cualquiera de las clases, pulsas en insertar fila y rellenas las columnas.</p>
<p><a href="https://ayudawp.com/?attachment_id=160218" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160218 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tabla-tasas-impuestos-empresa-peninsula-espana-1200x728.jpg" alt="" width="1200" height="728" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tabla-tasas-impuestos-empresa-peninsula-espana-1200x728.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tabla-tasas-impuestos-empresa-peninsula-espana-768x466.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tabla-tasas-impuestos-empresa-peninsula-espana-1536x932.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-tabla-tasas-impuestos-empresa-peninsula-espana.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<h3>Las columnas de siempre</h3>
<ul>
<li><strong>Código de país</strong>: dos letras en mayúsculas, <code>ES</code> para España. Un asterisco significa todos los países.</li>
<li><strong>Código de provincia</strong>: igual, con asterisco para todas. Si solo vendes en península y Baleares, con el asterisco lo tienes resuelto.</li>
<li><strong>Código postal</strong>: admite varios separados por punto y coma, comodines con asterisco al final (<code>07*</code> coge todos los que empiecen por 07) y rangos numéricos con tres puntos (<code>07000...07999</code>). Lo que no puedes es mezclar las dos técnicas, porque <strong>un comodín dentro de un rango numérico no funciona</strong>.</li>
<li><strong>Ciudad</strong>: lista separada por punto y coma y coincidencia exacta, o sea que si el cliente escribe el nombre de otra manera no coincide. Poco fiable, mejor usar códigos postales.</li>
<li><strong>Tasa %</strong>: el número, con punto decimal si lleva decimales. Para el 21 % se escribe <code>21.0000</code>.</li>
<li><strong>Nombre del impuesto</strong>: el texto que verá el cliente si tienes activado el desglose. Aquí pon IVA, o lo que toque.</li>
</ul>
<h3>¿Qué es eso de la prioridad?</h3>
<p>La prioridad <strong>es un número que le pones a cada fila</strong>, y la forma más fácil de entenderla es pensar en <strong>turnos</strong>.</p>
<p>WooCommerce va por turnos empezando por el número más bajo. En cada turno mira todas las filas que llevan ese número, se queda con la primera que encaje con la venta, la cobra y pasa al turno siguiente. Cuando ya no quedan filas, se acabó.</p>
<p>De ahí salen las dos únicas cosas que tienes que recordar:</p>
<ul>
<li><strong>Dos filas con el mismo número</strong>: compiten entre ellas y solo se cobra una.</li>
<li><strong>Dos filas con números distintos</strong>: se cobran las dos, una detrás de otra.</li>
</ul>
<p>Y ahora los dos casos reales donde esto te va a pasar de verdad.</p>
<p><strong>Cuando quieres que solo se aplique una</strong>, que es lo normal. Imagina que tienes una fila para todo el país con el IVA del 21 % y otra para Las Palmas al 0 %, porque a Canarias no le repercutes IVA. Un cliente de Las Palmas encaja con las dos, así que las dos tienen que llevar <strong>la misma prioridad, el 1</strong>. Así solo hay un turno, se cobra una sola fila y en paz.</p>
<p>Si por despiste le pusieras a la fila de Canarias la prioridad 2, pasaría esto: en el turno 1 se le cobra el 21 % de la fila general y en el turno 2 se le cobra el 0 % de la fila canaria, que no suma nada. Resultado, el cliente de Las Palmas paga el 21 % de IVA que precisamente querías ahorrarle, porque <strong>una fila al 0 % no anula a la anterior, simplemente no suma nada</strong>.</p>
<p><strong>Cuando quieres que se apliquen las dos</strong>, que es el caso del recargo de equivalencia. Aquí es justo al revés, porque necesitas cobrar el IVA y encima el recargo. La fila del IVA al 21 % va con prioridad 1 y la del recargo al 5,2 % con prioridad 2. Sobre una base de 100 € se cobran 21 € en el primer turno y 5,20 € en el segundo, así que el cliente paga 126,20 €.</p>
<p>Si les pusieras a las dos la prioridad 1 competirían entre ellas, se cobraría solo la primera y te faltarían esos 5,20 € en cada pedido.</p>
<p><strong>Y si tu tienda no está en ninguno de esos dos casos</strong>, o sea si solo cobras IVA español y punto, pon un 1 en todas las filas y olvídate del asunto.</p>
<h3>¿Compuesto? Ojo con esta casilla, que cambia precios sin avisar</h3>
<p>Esta casilla decide una sola cosa, <strong>si ese impuesto se calcula sobre el precio del producto o sobre el precio del producto con el impuesto anterior ya sumado encima</strong>. Dicho a lo bruto, marcarla es cobrar impuesto del impuesto.</p>
<p>Se ve clarísimo otra vez con el recargo de equivalencia, que es el único caso español en el que vas a tener dos filas conviviendo. Partimos de una base de 100 €, IVA del 21 % y recargo del 5,2 %:</p>
<ul>
<li><strong>Sin compuesto</strong>, que es lo correcto: el recargo se calcula sobre los 100 € de base, o sea 5,20 €. El cliente paga 126,20 €.</li>
<li><strong>Con compuesto</strong>, que es el error: el recargo se calcula sobre 121 €, o sea 6,29 €. El cliente paga 127,29 €.</li>
</ul>
<p>Un euro y pico de diferencia en un pedido de 100 €, que en uno de 1.000 € se convierte en casi 11 € que le estás cobrando de más a tu cliente sin que ni él ni tú os hayáis enterado. <strong>En España esta casilla se queda sin marcar</strong>, porque tanto el IVA como el recargo se calculan sobre la misma base.</p>
<h3>La casilla de envío</h3>
<p>Decide si esa tasa se cobra también sobre los gastos de envío, además de sobre los productos. Con un ejemplo se ve en un segundo, pedido de 100 € con 5 € de gastos de envío e IVA del 21 %:</p>
<ul>
<li><strong>Casilla marcada</strong>: el 21 % se calcula sobre 105 €, o sea 22,05 € de IVA. El cliente paga 127,05 €.</li>
<li><strong>Casilla sin marcar</strong>: el 21 % se calcula solo sobre los 100 € de los productos, o sea 21 €, y el envío se va limpio. El cliente paga 126 €.</li>
</ul>
<p>Lo normal es tenerla marcada en tus filas de IVA, porque el transporte también lleva IVA. Se deja sin marcar en casos concretos, como la fila del recargo de equivalencia, que grava el producto y no el porte.</p>
<p>Y aunque parezca una casilla inofensiva tiene más mala leche de la que aparenta, porque se coordina con otro ajuste que está en otra parte de la pantalla y ahí es donde se puede liar parda. Te lo cuento un poco más abajo, en su propia sección.</p>
<h3>Los tipos de IVA que hay que dar de alta</h3>
<p>Actualmente los tipos de IVA que hay en España son estos:</p>
<ul>
<li><strong>General, 21 %</strong>: todo lo que no esté expresamente en las dos listas siguientes. Si no sabes qué tipo aplicarle a algo, casi seguro que es este.</li>
<li><strong>Reducido, 10 %</strong>: alimentación en general, hostelería, transporte de viajeros y vivienda, entre otros.</li>
<li><strong>Superreducido, 4 %</strong>: pan común, leche, huevos, frutas y verduras naturales, aceite de oliva (que se quedó aquí de forma permanente desde el 1 de enero de 2025), libros, periódicos y medicamentos de uso humano.</li>
</ul>
<p>Hay una cuarta situación que no es un tipo sino una exención, y conviene no confundirla. La enseñanza reglada, la sanidad o algunos servicios financieros no llevan IVA porque están exentos, que no es lo mismo que estar al 0 %, y tiene consecuencias en el derecho a deducir de quien presta el servicio. Si vendes algo de esto, consúltalo con tu asesoría antes de meterlo en la tabla.</p>
<p>Los listados de productos por tipo se retocan de vez en cuando, así que si vendes algo que no tengas clarísimo, échale un vistazo a la <a href="https://sede.agenciatributaria.gob.es/" target="_blank" rel="nofollow noopener">web de la Agencia Tributaria</a> antes de dar por buena una tasa.</p>
<h3>Importar, exportar y borrar tasas</h3>
<p>Al pie de cada tabla de tasas de impuestos tienes botones para importar y exportar en CSV, muy útiles si mantienes un entorno de pruebas y otro de producción, o si gestionas varias tiendas parecidas.</p>
<p>El CSV lleva diez columnas en este orden: país, estado, código postal, ciudad, tasa, nombre del impuesto, prioridad, compuesto, envío y clase de impuesto. En vez de construirlo a mano, <strong>crea una fila cualquiera desde la interfaz y exporta</strong>, así tienes la plantilla exacta y solo tienes que rellenarla.</p>
<p>Para borrar, seleccionas las filas que quieras (con mayúsculas o con la tecla de comando para elegir varias) y pulsas en eliminar. Si lo que quieres es empezar de cero, en <strong>WooCommerce &gt; Estado &gt; Herramientas</strong> tienes una herramienta para eliminar todas las tasas de impuesto de golpe. Eso sí, <strong>esa acción no se puede deshacer</strong>, así que úsala solo si vas a rehacer la configuración entera.</p>
<h2>Los precios que ve el cliente y el aviso que sale cuando algo no cuadra</h2>
<p>Un poco más abajo en la misma pantalla de ajustes de los impuestos hay dos desplegables que deciden qué ve el cliente, y son independientes entre sí.</p>
<ul>
<li><strong>Mostrar los precios en la tienda</strong>: con impuestos incluidos o sin ellos.</li>
<li><strong>Mostrar los precios en el carrito y al finalizar la compra</strong>: lo mismo, pero puede ser distinto del anterior.</li>
</ul>
<p>Que sean independientes tiene sentido en algunos casos, por ejemplo en una tienda para profesionales que muestra el catálogo sin IVA pero luego desglosa en el carrito. Lo que no tiene sentido es que no cuadren sin querer.</p>
<p>Cuando la combinación de estos dos desplegables con el ajuste de precios con impuestos incluidos no es coherente, <strong>WooCommerce te muestra un aviso en la propia pantalla advirtiendo de que esa mezcla puede provocar descuadres de céntimos por redondeo</strong>, con un botón para igualar los tres de golpe.</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160220 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-aviso-problemas-redondeo-impuestos-ajustes-impuestos-1200x734.jpg" alt="" width="1200" height="734" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-aviso-problemas-redondeo-impuestos-ajustes-impuestos-1200x734.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-aviso-problemas-redondeo-impuestos-ajustes-impuestos-768x470.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-aviso-problemas-redondeo-impuestos-ajustes-impuestos.jpg 1376w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Si te sale ese aviso hazle caso, porque lo que viene después son clientes preguntándote por qué el total no les sale.</p>
<h2>El impuesto de los gastos de envío, con sus casos especiales</h2>
<p>Los gastos de envío también llevan impuesto, y decidir cuál es más enrevesado de lo que parece porque intervienen dos cosas a la vez.</p>
<h3>El desplegable de clase de impuesto de envío</h3>
<p>En la misma pantalla de opciones tienes un desplegable para la clase de impuesto que se aplica al envío, con estas posibilidades:</p>
<ul>
<li><strong>Basado en los artículos del carrito</strong>: es la opción por defecto y hereda la clase de los productos que lleve el pedido.</li>
<li><strong>Estándar</strong>, <strong>Tasa reducida</strong>, <strong>Tasa cero</strong> o cualquier clase que hayas creado: fuerza siempre esa, pase lo que pase.</li>
</ul>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160221 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajusets-impuesto-por-envio-1200x429.jpg" alt="" width="1200" height="429" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajusets-impuesto-por-envio-1200x429.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajusets-impuesto-por-envio-768x275.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajusets-impuesto-por-envio-1536x550.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-ajusets-impuesto-por-envio.jpg 1582w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<h3>¿Y qué pasa cuando el carrito mezcla productos de clases distintas?</h3>
<p>Aquí está la regla que hay que saberse de memoria, porque no es intuitiva que se diga. Si dejas la opción por defecto y el pedido lleva productos de varias clases, <strong>manda la clase Estándar en cuanto haya al menos un producto que la use</strong>, sea o no el tipo más alto de los que lleva el carrito. Y <strong>si no hay ningún producto en Estándar se usa la primera clase adicional que aparezca</strong> en tu lista de clases.</p>
<p>Un ejemplo de los que pasan todos los días. Un pedido con un libro al 4 % y una camiseta al 21 %, más 5 € de gastos de envío. Como la camiseta está en la clase Estándar, <strong>el envío tributa al 21 %</strong>, así que el cliente paga 5 € más 1,05 € de IVA por el transporte, y no los 0,20 € que saldrían si se aplicara el tipo del libro.</p>
<p>De esa regla sale un truco útil, y es que <strong>si necesitas que el envío tribute siempre a una clase adicional concreta cuando no haya productos estándar</strong> de por medio, esa clase tiene que ir la primera de la lista, porque es la que WooCommerce coge en ese caso.</p>
<h3>La casilla de envío de cada tasa</h3>
<p>Y ahora la parte que descoloca, y es que el hecho de elegir una clase en ese desplegable no basta, porque <strong>quien decide de verdad si se cobra impuesto por el envío es la casilla de envío de cada fila de la tabla de tasas</strong>.</p>
<p>El error típico es cuando seleccionas <strong>Tasa reducida</strong> en el desplegable pensando que así el envío irá al 10 %, pero resulta que la fila del 10 % en la tabla no tiene marcada la casilla de envío. El resultado no es que el envío vaya al 10 %, es que <strong>el envío no lleva impuesto ninguno</strong>. Las dos cosas tienen que ir coordinadas o el resultado te dará disgustos.</p>
<p>Para el caso normal deja el desplegable en la opción por defecto basada en los artículos del carrito y asegúrate de que la fila del IVA general tiene marcada la casilla de envío. Con eso cubres casi todas las combinaciones sin sustos.</p>
<h2>Redondeo: cuándo es importante y cuándo da igual</h2>
<p>Hay una <strong>casilla para redondear el impuesto a nivel de subtotal en vez de hacerlo línea a línea</strong>. Por defecto viene desmarcada, así que WooCommerce redondea el impuesto de cada línea de producto por separado y luego suma.</p>
<p><strong>La diferencia solo se nota en pedidos con muchas líneas y tasas con decimales</strong>, donde cada redondeo por línea puede arrastrar medio céntimo arriba o abajo y al sumarlos todos aparece un descuadre de uno o dos céntimos frente a calcular el impuesto una sola vez sobre el total ya sumado.</p>
<p>Con tres artículos no vas a notar nada, pero con un pedido mayorista de cuarenta líneas puede que sí, y entonces marcar esta casilla te ahorra la conversación de los céntimos con el cliente y con la asesoría. <strong>Si tu asesoría te pide que los importes cuadren al céntimo con su programa, prueba a marcarla</strong>, porque muchos programas de contabilidad calculan sobre el subtotal.</p>
<h2>El sufijo de precio, para enseñar los dos importes a la vez</h2>
<p>Es un campo de texto libre que se pinta detrás del precio en toda la tienda, y acepta dos comodines que WooCommerce sustituye por el importe correspondiente.</p>
<ul>
<li><code>{price_including_tax}</code>: el precio con impuestos.</li>
<li><code>{price_excluding_tax}</code>: el precio sin impuestos.</li>
</ul>
<p>Con esto puedes montar cosas como <strong>IVA incluido</strong> a secas, o algo más completo tipo <code>{price_excluding_tax} + IVA</code> si tu tienda <strong>muestra precios finales pero quieres que se vea la base</strong>. La utilidad más habitual es al revés, en tiendas para profesionales que enseñan precios sin IVA y necesitan dejar claro cuál es el importe final.</p>
<p>Un detalle que despista, <strong>en los productos variables el sufijo no aparece hasta que el cliente elige una variación</strong>, porque hasta ese momento WooCommerce no sabe qué precio tiene que calcular.</p>
<h2>El total de impuestos: ¿único o detallado?</h2>
<p>El último ajuste de la pantalla decide cómo se ve el impuesto en el carrito y al finalizar la compra.</p>
<ul>
<li><strong>Como un total único</strong>: una sola línea que pone «Impuestos» y suma todo lo que haya.</li>
<li><strong>Detallado</strong>: una línea por cada tasa, con el nombre que le hayas puesto en la columna correspondiente de la tabla.</li>
</ul>
<h3>Qué conviene poner</h3>
<p>Si toda tu tienda va con un único tipo de IVA, el total único queda más limpio y es perfectamente correcto. En cuanto puedes tener dos tipos en el mismo pedido, o dos impuestos a la vez como pasa con el recargo de equivalencia, <strong>el desglosado te ahorra problemas</strong> porque el cliente ve en pantalla lo mismo que se va a encontrar luego en la factura.</p>
<h3>¿Qué es lo obligatorio por ley?</h3>
<p>Aquí conviene no mezclar dos cosas distintas. <strong>Este ajuste afecta a la pantalla de compra, que es experiencia de usuario, y no a la factura</strong>, que es otra historia.</p>
<p>La obligación de verdad está en el Reglamento de facturación, el <a href="https://www.boe.es/buscar/act.php?id=BOE-A-2012-14696" target="_blank" rel="nofollow noopener">Real Decreto 1619/2012</a>, cuyo artículo 6 exige que la factura indique el tipo aplicado y la cuota por separado, y que <strong>cuando una misma factura tenga operaciones a distintos tipos de IVA se desglose también la base imponible que corresponde a cada uno</strong>.</p>
<p>Eso afecta al documento de factura, que WooCommerce por sí solo no genera, así que <strong>activar el desglose en el carrito no equivale a cumplir con Hacienda</strong>. Es una buena práctica de transparencia y evita que la pantalla de compra y la factura se contradigan, pero la factura la tendrás que emitir con tu programa de facturación o con un plugin dedicado.</p>
<h2>Por qué a veces los ajustes de WooCommerce salen en gris, inactivos</h2>
<p>Si abres la pantalla y la ves distinta a lo que te estoy contando, con la mitad de las opciones desactivadas y sin poder tocarlas, probablemente tengas activado el cálculo automático de impuestos.</p>
<p>Cuando ese cálculo automático está activo WooCommerce deja de hacerte caso a la tabla manual porque los tipos los decide un servicio externo según la dirección del cliente. <strong>Para poder seguir los pasos de esta guía tienes que desactivarlo</strong>, y entonces recuperas el control de la tabla de tasas.</p>
<h2>Los informes de impuestos</h2>
<p>En <strong>WooCommerce &gt; Análisis &gt; Impuestos</strong> tienes el resumen de lo recaudado, con filtro por fechas y desglose por cada tasa que tengas configurada.</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160224 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-analisis-impuestos-1200x701.jpg" alt="" width="1200" height="701" srcset="https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-analisis-impuestos-1200x701.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-analisis-impuestos-768x448.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-analisis-impuestos-1536x897.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/woocommerce-analisis-impuestos.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Es lo que le vas a pasar a tu gestoría cada trimestre, y de paso es la comprobación más rápida de si la configuración está bien hecha, porque si ves tasas que no esperabas o importes raros, algo has liado en la tabla.</p>
<h2>Repaso rápido para no dejarte nada</h2>
<p>El orden en el que conviene tomar las decisiones, por si quieres ir marcando:</p>
<ol>
<li>Activar los impuestos en los ajustes generales.</li>
<li>Decidir si introduces los precios con impuestos incluidos o sin ellos, antes de cargar el catálogo.</li>
<li>Poner la ubicación del cliente por defecto en Ajustes generales.</li>
<li>Elegir según qué dirección se calculan los impuestos.</li>
<li>Dar de alta las tasas de los tipos que necesites, con su nombre y su prioridad.</li>
<li>Coordinar la clase de impuesto del envío con la casilla de envío de la tasa que corresponda.</li>
<li>Ajustar el redondeo y cómo se muestran precios y totales.</li>
<li>Hacer un pedido de prueba y comprobar que los números salen donde tienen que salir.</li>
</ol>
<p>Y los fallos que más se repiten, para que los tengas fichados:</p>
<ul>
<li>Cambiar lo de precios con impuestos incluidos cuando el catálogo ya está cargado, y no revisar qué le ha pasado al margen.</li>
<li>Dejar la ubicación del cliente por defecto sin poner y volverse loco buscando por qué no sale el IVA en la tienda.</li>
<li>Marcar la casilla de compuesto pensando que sirve para relacionar dos impuestos que en realidad van sobre la misma base.</li>
<li>Elegir una clase de impuesto para el envío sin comprobar que esa tasa tiene marcada la casilla de envío.</li>
<li>Poner la misma prioridad a dos tasas que tenían que aplicarse las dos a la vez.</li>
</ul>
<h2>Los casos especiales: IRPF, recargo de equivalencia, otros impuestos y envíos, productos digitales, etc.</h2>
<p>Hasta aquí lo que necesita una tienda española que vende a consumidor final dentro de España. Lo que viene ahora solo te hace falta si estás en alguno de estos supuestos, así que ve directo al tuyo.</p>
<h3>Vendes a comerciantes minoristas, recargo de equivalencia</h3>
<p>El recargo de equivalencia <strong>es un régimen especial de IVA obligatorio para comerciantes minoristas</strong> que sean personas físicas o comunidades de bienes y que vendan productos sin transformar al consumidor final. Si tus clientes son de ese perfil, tienes que facturarles el IVA más un recargo adicional.</p>
<p>Lo básico:</p>
<ul>
<li>Los tipos vigentes en 2026 son 5,2 % para los productos que van al 21 %, 1,4 % para los que van al 10 % y 0,5 % para los del 4 %.</li>
<li>En la tabla de tasas se monta con dos filas del mismo país y prioridades distintas, una para el IVA y otra para el recargo, como te contaba en la sección de prioridad.</li>
<li>La fila del recargo no se marca como compuesta, porque va sobre la misma base que el IVA.</li>
<li>Tampoco se le suele marcar la casilla de envío, porque el recargo grava el producto y no el transporte.</li>
<li>Con el desglose de totales activado, para que en el pedido se vean el IVA y el recargo como conceptos separados.</li>
</ul>
<p>Y aquí está el límite de lo que WooCommerce hace solo, porque <strong>la tabla de tasas funciona por zonas geográficas y no distingue qué tipo de cliente está comprando</strong>, que es justo lo que necesitas para decidir si aplicas el recargo o no. Esa parte te la conté en su momento con la solución por rol de usuario en <a href="https://ayudawp.com/recargo-equivalencia-woocommerce/" target="_blank" rel="ugc noopener">el artículo dedicado al recargo de equivalencia en WooCommerce</a>.</p>
<h3>Eres autónomo y tienes que retener IRPF</h3>
<p>Si eres autónomo dado de alta en una actividad profesional y le vendes a otros profesionales o a empresas, en esas facturas hay que restar la retención del IRPF.</p>
<p>Lo básico:</p>
<ul>
<li>El tipo general de retención es el 15 %, con un reducido del 7 % para nuevos autónomos durante el año de alta y los dos siguientes.</li>
<li>Solo aplica en actividades profesionales, las de las secciones segunda y tercera del impuesto de actividades económicas, no en las empresariales de la sección primera.</li>
<li>Nunca se le retiene a un particular, solo a empresas y profesionales.</li>
<li>La retención se calcula sobre la base imponible, y el IVA también, así que el IVA no cambia por el hecho de que haya retención.</li>
</ul>
<p><strong>Esto no se puede montar solo con la tabla de tasas de WooCommerce</strong>, porque todas sus columnas son geográficas y ninguna distingue qué tipo de cliente está comprando, que es justo lo que decide si hay retención o no. Lo tienes desarrollado, con los requisitos que debe cumplir cualquier solución y las opciones que hay según tu caso, en <a href="https://ayudawp.com/woocommerce-irpf-autonomos/" target="_blank" rel="ugc noopener">el artículo sobre la retención de IRPF en WooCommerce</a>.</p>
<h3>Envías a Canarias, Ceuta o Melilla desde la península</h3>
<p>Estos territorios están fuera del ámbito de aplicación del IVA español, así que la venta desde la península hacia allí es una <strong>exportación exenta</strong>. Y de ahí sale lo que más confunde, y es que tú no cobras absolutamente ningún impuesto en esa venta.</p>
<p>Ni IVA, que no aplica, ni tampoco el IGIC canario o el IPSI de Ceuta y Melilla, porque esos <strong>los liquida el cliente en destino</strong> cuando el transportista o Correos le entrega el paquete, junto con los gastos de gestión que le cobren por el trámite.</p>
<p>En la tabla de tasas se refleja con cuatro filas al 0 %, una por cada provincia implicada, usando los códigos de provincia que espera WooCommerce:</p>
<ul>
<li><code>ES</code> / <code>GC</code> / <code>0.0000</code> para Las Palmas.</li>
<li><code>ES</code> / <code>TF</code> / <code>0.0000</code> para Santa Cruz de Tenerife.</li>
<li><code>ES</code> / <code>CE</code> / <code>0.0000</code> para Ceuta.</li>
<li><code>ES</code> / <code>ML</code> / <code>0.0000</code> para Melilla.</li>
</ul>
<p>Si prefieres tirar de códigos postales, el equivalente es <code>35*</code> y <code>38*</code> para Canarias, <code>51*</code> para Ceuta y <code>52*</code> para Melilla. Y acuérdate de marcarles la casilla de envío, porque tampoco se repercute impuesto sobre el transporte de una operación exenta.</p>
<p>Hay un detalle que tienes que comprobar tú y no dar por hecho, y es que si tu fila del IVA general lleva un asterisco en la columna de provincia, esa fila también encaja con un cliente de Las Palmas, así que las dos compiten.</p>
<p>Como solo se aplica una tasa por prioridad, coloca las filas específicas por encima de la general arrastrándolas en la tabla y <strong>haz un pedido de prueba con una dirección canaria para ver cuál gana de verdad</strong>. Son cinco minutos y te ahorran facturar mal durante meses.</p>
<p>Y un aviso que va más allá de los impuestos, porque un envío a estos destinos puede llevar trámites de aduana según el producto y su valor. Eso condiciona también cómo montes las zonas de envío, y es de las cosas que conviene consultar con tu gestoría antes de abrir la venta a estos territorios.</p>
<h3>Tu tienda está en Canarias</h3>
<p>Aquí la película es la contraria, porque <strong>sí repercutes IGIC</strong> en tus ventas dentro del archipiélago, y no IVA. La buena noticia es que la mecánica de WooCommerce es exactamente la misma que te he contado en todo el artículo, solo cambian los números que metes en las tasas.</p>
<p>Los tipos vigentes en 2026 son estos:</p>
<ul>
<li><strong>0 %</strong>: pan, leche, huevos, harinas, frutas, verduras, agua, libros, periódicos, medicamentos de uso humano y vivienda de protección oficial.</li>
<li><strong>3 %</strong>: transporte de viajeros, hostelería y reparaciones de vivienda, entre otros.</li>
<li><strong>7 %</strong>: el tipo general, o sea todo lo que no encaje en ningún otro. Es el equivalente al 21 % peninsular.</li>
<li><strong>9,5 %</strong>: perfumería, joyería por debajo de 400 € y embarcaciones de hasta nueve metros.</li>
<li><strong>15 %</strong>: artículos considerados suntuarios, como vehículos de lujo, embarcaciones grandes o joyas por encima de 400 €.</li>
<li><strong>20 %</strong>: labores del tabaco rubio.</li>
</ul>
<p>Desde 2026 hay además un tipo específico del 1 % para el petróleo y sus derivados, así que si vendes algo de eso no lo metas en el general por costumbre.</p>
<p><strong>Un matiz que despista es que el tipo cero del IGIC no es lo mismo que una operación exenta</strong>. A tipo cero repercutes un 0 % pero conservas el derecho a deducir el IGIC que hayas soportado, mientras que en una operación exenta no deduces.</p>
<p>Para WooCommerce da igual porque en los dos casos la fila va a cero, pero para tu modelo 420 la diferencia es grande, así que no las mezcles en la misma clase de impuesto si quieres tener los números claros al cerrar el trimestre.</p>
<p>Si además vendes a la península desde Canarias, esa venta es una exportación igual que en el caso anterior, así que necesitas una fila al 0 % para el resto de provincias españolas. Lo que no puedes hacer es facturarle IGIC a un cliente peninsular, que es el error más típico de quien monta la tienda desde el archipiélago.</p>
<p>Los tipos y qué producto va en cada uno los actualiza la Agencia Tributaria Canaria, así que consúltalo ahí antes de dar por buena ninguna tasa, que estos tipos se retocan más a menudo que los peninsulares.</p>
<h3>Tu tienda está en Ceuta o Melilla</h3>
<p>Aquí <strong>no hay ni IVA ni IGIC sino IPSI</strong>, con tipos que van del 0,5 % al 10 % según la actividad. La particularidad es que <strong>cada ciudad tiene su propia ordenanza fiscal</strong>, así que no existe una tabla común que te sirva para las dos y tienes que mirar la de tu ciudad para saber qué tipo le corresponde a cada cosa que vendes.</p>
<p>El montaje en WooCommerce no tiene misterio una vez sabes los tipos, es dar de alta las tasas en las clases correspondientes igual que en cualquier otro caso.</p>
<h3>Vendes a particulares de otros países de la Unión Europea</h3>
<p>Mientras tus ventas a consumidores de otros países de la Unión Europea no pasen de 10.000 € al año en conjunto (no por país, sumando todos), <strong>sigues aplicando el IVA español y lo declaras en tu modelo 303</strong> de siempre.</p>
<p>Cuando pasas ese umbral cambia la película porque tienes que aplicar el IVA del país de cada cliente. Sería así:</p>
<ul>
<li>Te das de alta en el régimen de ventanilla única con el modelo 035 en la sede de la Agencia Tributaria.</li>
<li>Declaras todas esas ventas juntas con el modelo 369 trimestral, y la Agencia reparte a cada país lo suyo.</li>
<li>Una vez dado de alta, el 369 se presenta cada trimestre aunque no hayas vendido nada en ese periodo.</li>
<li>Hay otro régimen distinto, la ventanilla única de importación, para mercancía que viene de fuera de la Unión Europea por debajo de 150 €. No lo confundas con el anterior.</li>
<li>Si le vendes a una empresa de otro país con número de operador intracomunitario válido, la operación va sin IVA por inversión del sujeto pasivo, que es otro supuesto diferente.</li>
</ul>
<p>Montar los tipos de veintitantos países a mano en la tabla de tasas es posible pero es un suplicio de mantener, porque los tipos cambian y te enteras tarde. Para esto sí merece la pena un plugin que traiga los tipos actualizados y te controle el umbral. La parte de darte de alta y presentar los modelos no te la quita ningún plugin, eso sigue siendo cosa tuya y de tu asesoría.</p>
<h3>Vendes productos digitales</h3>
<p>Descargas, cursos, software y en general cualquier servicio prestado por vía electrónica tienen su propia regla desde 2015, y es que <strong>el IVA se calcula según dónde esté el cliente, no según dónde estés tú</strong>, sin umbral que valga para los consumidores de la Unión Europea.</p>
<p>Cómo se monta en WooCommerce:</p>
<ul>
<li>Creas una clase de impuesto adicional, por ejemplo llamada Bienes digitales.</li>
<li>Le cargas en esa clase los tipos de IVA de cada país miembro.</li>
<li>Asignas esa clase a tus productos digitales desde la ficha de cada uno, o en lote desde el listado de productos con la edición rápida.</li>
<li>Compruebas que el cálculo por dirección está en la del cliente y no en la de la tienda, porque si no, nada de esto sirve.</li>
</ul>
<p>Y hay una obligación que no es de WooCommerce pero que te afecta, y es que tienes que <strong>conservar pruebas de dónde estaba el cliente</strong>, normalmente su dirección de facturación y la dirección IP desde la que compró. Aquí también te viene bien un plugin de los que geolocalizan y guardan esa evidencia, porque hacerlo a mano no es viable.</p>
<h3>Y la factura, que es otra guerra</h3>
<p>Que los impuestos salgan bien en pantalla no significa que la factura salga bien, y esto cada día se pone más serio, más con la entrada en vigor del sistema de facturación verificable, obligatorio desde enero de 2027 para sociedades y desde julio de 2027 para autónomos.</p>
<p>No cambia nada de lo que has configurado aquí, porque afecta a cómo se genera y se conserva la factura, no a cómo se calcula el IVA. Lo tienes explicado en <a href="https://ayudawp.com/verifactu-woocommerce/" target="_blank" rel="ugc noopener">la guía de Verifactu en WooCommerce</a>.</p>
<p>Con los impuestos resueltos, <strong>lo siguiente que toca es configurar los envíos</strong>, que merecen su propia ración de rarezas y tienen guía aparte.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/configurar-impuestos-woocommerce/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>SMTP en WordPress «sin plugins»</title>
		<link>https://ayudawp.com/smtp-wordpress-sin-plugins/</link>
					<comments>https://ayudawp.com/smtp-wordpress-sin-plugins/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Tue, 15 Sep 2026 06:28:05 +0000</pubDate>
				<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[Experto]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[wp-config.php]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160109</guid>

					<description><![CDATA[¿A que lo has pensado?, reconócelo, ya tengo veinte plugins, ¿en serio necesito otro plugin solo para mandar correos desde WordPress?
La respuesta es que sí se puede…]]></description>
										<content:encoded><![CDATA[<p>¿A que lo has pensado?, reconócelo, <strong>ya tengo veinte plugins, ¿en serio necesito otro plugin solo para mandar correos desde WordPress?</strong></p>
<p>La respuesta es que <strong>sí se puede</strong>, y en realidad no es tan complicado, tiene sus cosas, pero poderse se puede, y te lo explico ya mismo, pero igual la duda esté mal planteada de origen.</p>
<h2>En realidad eso de «sin plugin» no es tan así</h2>
<p>El código que configura el SMTP tiene que <em>vivir</em> en algún sitio, y solo hay tres:</p>
<ul>
<li><strong>El <code>functions.php</code> del tema</strong>, que es la peor opción de las tres, porque el día que cambies de tema tu web deja de mandar correos y nadie va a relacionar una cosa con la otra.</li>
<li><strong>Un plugin propio</strong>, que evidentemente es un plugin.</li>
<li><strong>Un mu-plugin</strong>, en <code>wp-content/mu-plugins/</code>, que también es un plugin, solo que se activa siempre y no aparece con un botón de desactivar en el escritorio.</li>
</ul>
<p>Así que <strong>lo que en realidad estás pensando es si puedes montar el SMTP sin instalar un plugin del directorio</strong>, y eso sí, con un archivo tuyo de veinte líneas.</p>
<p>Que sea un <code>mu-plugin</code> no es un tecnicismo tonto, es precisamente la ventaja, porque no se desactiva por error ni se pierde al tocar el tema.</p>
<h2>Pues no, resulta que no existe eso de configurar SMTP desde wp-config.php</h2>
<p>Meter las credenciales en <code>wp-config.php</code> está muy bien y es lo que vas a ver en el código de un poco más abajo de este artículo, pero por sí solas esas constantes no hacen absolutamente nada, porque <strong>WordPress no las lee, nunca ha tenido ajustes SMTP nativos</strong>.</p>
<p>La propuesta de añadirlos existe, es el <a href="https://core.trac.wordpress.org/ticket/29069" target="_blank" rel="nofollow noopener">ticket 29069 de Trac</a>, abierto en 2014 y cerrado como <code>wontfix</code> en 2019, con dos argumentos:</p>
<ol>
<li>WordPress va de decisiones y no de opciones, y esto es territorio de plugins.</li>
<li>Como <code>wp_mail()</code> es una función reemplazable, si un plugin la sustituye esas constantes dejarían de hacer efecto sin que nadie se enterase, lo que sería un infierno de depurar.</li>
</ol>
<p>Lo que hay que hacer, entonces, es engancharse donde el núcleo de WordPress sí lo permite.</p>
<h2>Esto sí está en WordPress: PHPMailer</h2>
<p>WordPress trae <code>PHPMailer</code> incluido, y esa librería sirve SMTP de serie. Lo único que falta es decirle cómo, y para eso hay cuatro puntos de enganche:</p>
<ul>
<li><code>phpmailer_init</code>: se dispara justo después de crear el objeto PHPMailer y te lo pasa por referencia, así que puedes configurarlo a tu gusto. Existe desde WordPress 2.2.</li>
<li><code>pre_wp_mail</code>: cortocircuita <code>wp_mail()</code> entero, de modo que puedes mandar el correo como te dé la gana y devolver si salió bien. Está desde WordPress 5.7.</li>
<li><code>wp_mail_succeeded</code>: salta cuando el envío se ha procesado sin errores y te entrega destinatario, asunto, mensaje, cabeceras y adjuntos. Desde WordPress 5.9.</li>
<li><code>wp_mail_failed</code>: te entrega el objeto de error cuando el envío falla, que es la única forma de enterarte de lo que pasó.</li>
</ul>
<p><strong>Con el primero montas el envío,  con los dos últimos te haces tu propio registro de correos</strong>, que es lo que la mayoría de plugins te cobra.</p>
<h2>SMTP en WordPress «sin plugins» en 2 pasos</h2>
<p>Empezamos con las credenciales, en <code>wp-config.php</code>, por encima de la línea que dice que dejes de añadir cosas. Ponlas ahí y no en el mu-plugin, que luego los archivos de código acaban en un repositorio o en un correo de soporte y las contraseñas viajan con ellos.</p>
<pre>define( 'AYUDAWP_SMTP_HOST', 'smtp.TUPROVEEDOR.com' );
define( 'AYUDAWP_SMTP_PORT', 587 );
define( 'AYUDAWP_SMTP_SECURE', 'tls' );
define( 'AYUDAWP_SMTP_USER', 'NOMBRE@TUDOMINIO' );
define( 'AYUDAWP_SMTP_PASS', 'PON_AQUI_TU_CLAVE' );
define( 'AYUDAWP_SMTP_FROM', 'NOMBRE@TUDOMINIO.com' );
define( 'AYUDAWP_SMTP_FROM_NAME', 'Nombre del remitente o de tu web' );</pre>
<p><strong>De dónde sale cada uno de esos valores</strong></p>
<p>Lo de <code>clave_ SMTP_</code> significa una cosa distinta según dónde tengas el correo:</p>
<ul>
<li><strong>Correo del dominio en tu propio hosting</strong>: El servidor te lo da el panel de tu alojamiento web, normalmente algo del estilo <code>mail.tudominio.com</code>, el usuario es la dirección completa del buzón y la contraseña es esa misma que pusiste al crear la cuenta de correo.</li>
<li><strong>Gmail o Google Workspace:</strong> El servidor suele ser <code>smtp.gmail.com</code>, el usuario es tu dirección completa y la contraseña es una contraseña de aplicación de Google, normalmente de dieciséis caracteres, que se generan en la sección de seguridad de tu cuenta y que necesitan la verificación en dos pasos activada. La contraseña normal de Google no vale desde hace años.</li>
<li><strong>Un servicio transaccional</strong>: del tipo Brevo, Mailgun o SMTP2GO. Cada uno tiene su pantalla de credenciales SMTP donde te genera un usuario y una clave específicos para esto, que no son los que usas para entrar en el servicio. Ahí también te dan el servidor y el puerto a utilizar.</li>
<li><strong>Microsoft 365 u Outlook</strong>: Aquí no te doy valores porque no te lo recomiendo, que la identificación básica cada vez funciona menos, y en las cuentas personales ya ni está. Esto lo explico en otro momento.</li>
</ul>
<p>Por cierto, importante, <strong>las contraseñas de aplicación de WordPress no sirven para esto</strong>, esas se utilizan para que una aplicación externa se identifique en la REST API o XML-RPC de tu web.</p>
<p>Son cosa de entrada, no de salida, y si las pegas en la constante de la contraseña el servidor de correo te va a rechazar sin contemplaciones. Si te interesa el tema lo explico en <a href="https://ayudawp.com/application-passwords/" target="_blank" rel="ugc noopener">este artículo sobre las contraseñas de aplicación de WordPress</a>.</p>
<p>Por ir terminando con los detalles, el hecho de que Google llame igual a las suyas es una coincidencia desafortunada que confunde a medio mundo, pero son dos cosas que no tienen nada que ver.</p>
<p>No me enrollo más y dicho esto <strong>ya tocaría ponernos con el mu-plugin</strong>. Creas la carpeta <code>wp-content/mu-plugins/</code> si no la tienes, y dentro un archivo llamado, por ejemplo, <code>ayudawp-smtp.php</code>:</p>
<pre>&lt;?php
/**
 * Plugin Name: SMTP para WordPress
 * Plugin URI: https://plugins.ayudawp.com
 * Description: Envía los correos de WordPress usando un servidor SMTP con identificación.
 * Version: 1.0.0
 * Author: Fernando Tellado
 * Author URI: https://tellado.es 
 * License: GPL-2.0-or-later
 */

defined( 'ABSPATH' ) || exit;

/**
 * Configure PHPMailer para usar SMTP.
 * Las credenciales van como constantes en wp-config.php, no las metas aquí.
 */
function ayudawp_smtp_config( $phpmailer ) {

	// Salida silenciosa si el sitio aún no se ha configurado
	if ( ! defined( 'AYUDAWP_SMTP_HOST' ) || ! defined( 'AYUDAWP_SMTP_PASS' ) ) {
		return;
	}

	$phpmailer-&gt;isSMTP();
	$phpmailer-&gt;Host       = AYUDAWP_SMTP_HOST;
	$phpmailer-&gt;Port       = AYUDAWP_SMTP_PORT;
	$phpmailer-&gt;SMTPAuth   = true;
	$phpmailer-&gt;SMTPSecure = AYUDAWP_SMTP_SECURE;
	$phpmailer-&gt;Username   = AYUDAWP_SMTP_USER;
	$phpmailer-&gt;Password   = AYUDAWP_SMTP_PASS;

	// 30 segundos es más que suficiente. Con el valor por defecto la solicitud se quedaría bloqueada durante varios minutos
	$phpmailer-&gt;Timeout = 30;
}
add_action( 'phpmailer_init', 'ayudawp_smtp_config' );

/**
 * La dirección del remitente debe pertenecer al dominio autorizado (coincidencia SPF/DKIM)
 */
function ayudawp_smtp_from( $from ) {
	return defined( 'AYUDAWP_SMTP_FROM' ) ? AYUDAWP_SMTP_FROM : $from;
}
add_filter( 'wp_mail_from', 'ayudawp_smtp_from' );

function ayudawp_smtp_from_name( $name ) {
	return defined( 'AYUDAWP_SMTP_FROM_NAME' ) ? AYUDAWP_SMTP_FROM_NAME : $name;
}
add_filter( 'wp_mail_from_name', 'ayudawp_smtp_from_name' );</pre>
<p>Ya está, eso es todo. En cuanto subes el archivo está activo, los mu-plugins no hace falta activarlos, y si tienes ya añadidos tus datos al <code>wp-config.php</code> como en el primer paso ya lo tienes.</p>
<h3>Valores que podrían darte algo de guerra</h3>
<p>El puerto y el cifrado se confunden constantemente porque van emparejados:</p>
<ul>
<li>El 587 va con <code>tls</code>, que arranca en claro y sube a cifrado con STARTTLS, y es el que deberías usar.</li>
<li>El 465 va con <code>ssl</code>, cifrado desde el primer byte, y sigue funcionando en todas partes.</li>
<li>El 25 no lo uses para esto, está pensado para el tráfico entre servidores y lo tiene bloqueado medio internet.</li>
</ul>
<p>Con el remitente mejor los dos filtros del ejemplo que tocar <code>$phpmailer-&gt;From</code> a pelo, porque así lo respeta cualquier otro plugin que mande correos.</p>
<p>Y si alguna vez tienes que llamar a <code>setFrom()</code>, pásale <code>false</code> como tercer parámetro para que PHPMailer no te pise la cabecera <code>Sender</code>, que hay servidores que rechazan el mensaje por eso.</p>
<h2>Todo en un archivo, si no quieres tocar wp-config.php</h2>
<p>Hay quien no quiere andar tocando <code>wp-config.php</code>, y lo entiendo, que es el archivo donde un despiste te deja la web en blanco. Así que aquí tienes la misma cosa en un solo archivo, con las credenciales dentro y un bloque de ajustes arriba que es lo único que hay que editar.</p>
<p>Eso sí, sustituye a los dos anteriores, no los mezcles, o usas los 2 pasos de antes o este archivo completo.</p>
<pre>&lt;?php
/**
 * Plugin Name: SMTP para WordPress
 * Plugin URI: https://plugins.ayudawp.com
 * Description: Envía los correos de WordPress usando un servidor SMTP con identificación.
 * Version: 1.0.0
 * Author: Fernando Tellado
 * Author URI: https://tellado.es
 * License: GPL-2.0-or-later
 */

defined( 'ABSPATH' ) || exit;

/**
 * Ajustes SMTP. Este es el único bloque que tienes que modificar
 *
 * host      Servidor de correo saliente, te lo da tu proveedor de mail
 * port      587 con 'tls', o 465 con 'ssl'
 * secure    Debe coincidir con el puerto de arriba
 * user      Normalmente la dirección de email
 * pass      La contraseña SMTP de la dirección de email
 * from      Dirección de email del remitente. Debe pertenecer al dominio autorizado
 * from_name Nombre del remitente mostrado en los correos enviados
 */
function ayudawp_smtp_settings() {

	return array(
		'host'      =&gt; 'smtp.TUPROVEEDOR.com',
		'port'      =&gt; 587,
		'secure'    =&gt; 'tls',
		'user'      =&gt; 'NOMBRE@TUDOMINIO.com',
		'pass'      =&gt; 'PON_AQUI_TU_CLAVE',
		'from'      =&gt; 'NOMBRE@TUDOMINIO.com',
		'from_name' =&gt; 'Nombre del remitente o de tu web',
	);
}

/**
 * Configura PHPMailer para que use SMTP
 */
function ayudawp_smtp_config( $phpmailer ) {

	$config = ayudawp_smtp_settings();

	// No hace nada hasta que los ajustes de arriba se hayan completado
	if ( empty( $config['host'] ) || 'PON_AQUI_TU_CLAVE' === $config['pass'] ) {
		return;
	}

	$phpmailer-&gt;isSMTP();
	$phpmailer-&gt;Host       = $config['host'];
	$phpmailer-&gt;Port       = (int) $config['port'];
	$phpmailer-&gt;SMTPAuth   = true;
	$phpmailer-&gt;SMTPSecure = $config['secure'];
	$phpmailer-&gt;Username   = $config['user'];
	$phpmailer-&gt;Password   = $config['pass'];

	// 30 segundos es más que suficiente. Con el valor por defecto la solicitud se quedaría bloqueada durante varios minutos.
	$phpmailer-&gt;Timeout = 30;
}
add_action( 'phpmailer_init', 'ayudawp_smtp_config' );

/**
 * La dirección del remitente debe pertenecer al dominio autorizado (coincidencia SPF/DKIM)
 */
function ayudawp_smtp_from( $from ) {

	$config = ayudawp_smtp_settings();

	return ! empty( $config['from'] ) ? $config['from'] : $from;
}
add_filter( 'wp_mail_from', 'ayudawp_smtp_from' );

function ayudawp_smtp_from_name( $name ) {

	$config = ayudawp_smtp_settings();

	return ! empty( $config['from_name'] ) ? $config['from_name'] : $name;
}
add_filter( 'wp_mail_from_name', 'ayudawp_smtp_from_name' );</pre>
<p>Fíjate en el condicional del principio, que no está de adorno. <strong>Mientras la clave siga siendo el texto de ejemplo, el mu-plugin no hace nada y WordPress manda como siempre</strong>, así que si subes el archivo y se te olvida rellenarlo no rompes el envío, simplemente sigue como estaba.</p>
<p>Y ahora un aviso, o recordatorio, como prefieras, y es que meter la clave aquí es más cómodo pero también menos seguro, por un motivo muy concreto.</p>
<p>Los archivos dentro de <code>mu-plugins</code> están dentro de <code>wp-content</code>, que es una carpeta pública, y <strong>el día que el servidor deje de procesar PHP por lo que sea, este archivo se sirve como texto plano con tu contraseña dentro</strong>.</p>
<p>Con <code>wp-config.php</code> puede pasar lo mismo, pero con la diferencia de que casi todos los hosting traen una regla en el servidor que bloquea ese archivo por su nombre, o incluso la puedes añadir tú usando <a href="https://ayudawp.com/tag/vigilante/" target="_blank" rel="noopener">Vigilante</a>, y para tu mu-plugin no la trae nadie.</p>
<p>Si te vas por este camino dedícale un minuto a poner esa regla tú, si no la añade tu hosting o no usas Vigilante (a quién se le ocurre). Creas un archivo llamado <code>.htaccess</code> dentro de <code>wp-content/mu-plugins/</code> con estas tres líneas:</p>
<pre>&lt;FilesMatch "\.php$"&gt;
Require all denied
&lt;/FilesMatch&gt;</pre>
<p>Con Nginx eso no vale y hay que pedírselo a tu proveedor, o mirar si su panel te deja bloquear el acceso directo a esa carpeta. Y en cualquiera de los dos casos, acuérdate de que la clave viaja en las copias de seguridad, así que si le pasas un respaldo a alguien le estás pasando también la contraseña del correo.</p>
<h2>Tu propio registro de correos, sin base de datos ni plugins de pago</h2>
<p>Esta es la parte que hace que merezca (más) la pena todo lo anterior, porque <strong>el registro de envíos es justo lo que casi todos los plugins de SMTP guardan para la versión de pago, y montarlo son unas pocas líneas más</strong>.</p>
<p>La idea es simple, enganchas <code>wp_mail_succeeded</code> y <code>wp_mail_failed</code>, y escribes una línea por envío en un archivo de texto. Nada de tablas, nada de tipos de contenido personalizados, nada que engorde la base de datos.</p>
<p>Eso sí, lo que te propongo lleva un par de decisiones de diseño que no son caprichos. Por un lado verás que <strong>el archivo empieza por una instrucción de salida de PHP para que nadie pueda leerlo desde el navegador</strong> aunque adivine la ruta, y <strong>no guardo el cuerpo de los mensajes</strong>, solo destinatario, asunto y resultado.</p>
<p>Esto lo he definido así porque un registro de correos completo es un almacén de datos personales con todo lo que eso implica en cuanto al RGPD.</p>
<pre>/**
 * Registro minimalista de registro de correos. Sin base de datos ni pantalla de ajustes
 * Escribe una línea por mensaje a un archivo protegido dentro de wp-content
 */
function ayudawp_mail_log_file() {
	return WP_CONTENT_DIR . '/ayudawp-mail-log.php';
}

/**
 * Añade una entrada al registro, rotando el archivo cuando crezca demasiado
 * Nunca se almacenan los contenidos del mensaje, solo los metadatos
 */
function ayudawp_mail_log_write( $status, $to, $subject, $detail = '' ) {

	$file = ayudawp_mail_log_file();
	// El carácter de salida impide que el archivo se pueda leer a través de HTTP
	$header = "&lt;?php exit; ?&gt;\n";

	if ( ! file_exists( $file ) ) {
		file_put_contents( $file, $header );
	}

	clearstatcache( true, $file );

	// Rota cuando llegue a los 2 MB, manteniendo solo un archivo previo
	if ( filesize( $file ) &gt; 2 * MB_IN_BYTES ) {
		rename( $file, $file . '.old' );
		file_put_contents( $file, $header );
	}

	$line = sprintf(
		"[%s] %s | para: %s | asunto: %s%s\n",
		current_time( 'mysql' ),
		$status,
		is_array( $to ) ? implode( ', ', $to ) : $to,
		$subject,
		'' !== $detail ? ' | ' . $detail : ''
	);

	file_put_contents( $file, $line, FILE_APPEND | LOCK_EX );
}

/**
 * Registra mensajes que PHPMailer procesó sin errores
 */
function ayudawp_mail_log_success( $mail_data ) {
	ayudawp_mail_log_write( 'OK  ', $mail_data['to'], $mail_data['subject'] );
}
add_action( 'wp_mail_succeeded', 'ayudawp_mail_log_success' );

/**
 * Registra juntos los fallos con el motivo que los provocó
 */
function ayudawp_mail_log_failure( $error ) {

	$data = $error-&gt;get_error_data();

	ayudawp_mail_log_write(
		'KO',
		isset( $data['to'] ) ? $data['to'] : 'desconocido',
		isset( $data['subject'] ) ? $data['subject'] : 'desconocido',
		$error-&gt;get_error_message()
	);
}
add_action( 'wp_mail_failed', 'ayudawp_mail_log_failure' );</pre>
<p>El resultado es un archivo que puedes abrir con el gestor de archivos del hosting o un cliente FTP, y que se lee de un vistazo:</p>
<pre>[2026-08-11 09:14:22] OK   | para: cliente@example.com | asunto: Tu pedido #1482
[2026-08-11 09:31:07] KO | para: otro@example.com | asunto: Restablecer contraseña | SMTP connect() failed.</pre>
<p>Un par de avisos sobre este código.</p>
<ul>
<li>El gancho de éxito significa que el mensaje salió sin errores, <strong>no significa que haya llegado a la bandeja de nadie</strong>, eso lo avisa el propio núcleo en su documentación.</li>
<li>Si algún día conviertes esto en un plugin para el directorio oficial, la escritura de archivos hay que hacerla con la API de sistema de archivos de WordPress, que aquí he ido directo para no triplicar el código de un ejemplo.</li>
</ul>
<h2>Cuando el puerto está cerrado el camino es HTTPS</h2>
<p>Bastantes hosting bloquean las conexiones salientes por los puertos de correo, y lo hacen por un buen motivo, para que una web comprometida no acabe convertida en una máquina de spam.</p>
<p>Si te toca uno de esos alojamientos entonces SMTP no es una opción y no lo va a ser por mucho que insistas.</p>
<p>La salida es mandar por la API del proveedor, que viaja por HTTPS y no la bloquea nadie. Y aquí es donde entra <code>pre_wp_mail</code>, que cortocircuita el envío entero:</p>
<pre>/**
 * Envía los correos de WordPress usando un proveedor con API HTTP en vez de SMTP
 * Devolver un valor no nulo frena wp_mail()
 */
function ayudawp_mail_via_api( $short_circuit, $atts ) {

	if ( ! defined( 'AYUDAWP_MAIL_API_KEY' ) ) {
		return $short_circuit; // Deja que WordPress lo gestione como siempre
	}

	$to = is_array( $atts['to'] ) ? $atts['to'] : array( $atts['to'] );

	$response = wp_remote_post(
		'https://api.TUPROVEEDOR.com/v1/send',
		array(
			'timeout' =&gt; 15,
			'headers' =&gt; array(
				'Authorization' =&gt; 'Bearer ' . AYUDAWP_MAIL_API_KEY,
				'Content-Type'  =&gt; 'application/json',
			),
			'body'    =&gt; wp_json_encode(
				array(
					'from'    =&gt; AYUDAWP_SMTP_FROM,
					'to'      =&gt; $to,
					'subject' =&gt; $atts['subject'],
					'html'    =&gt; $atts['message'],
				)
			),
		)
	);

	if ( is_wp_error( $response ) ) {
		ayudawp_mail_log_write( 'KO', $to, $atts['subject'], $response-&gt;get_error_message() );
		return false;
	}

	$sent = ( 200 === wp_remote_retrieve_response_code( $response ) );
	ayudawp_mail_log_write( $sent ? 'OK  ' : 'FALLO', $to, $atts['subject'] );

	return $sent;
}
add_filter( 'pre_wp_mail', 'ayudawp_mail_via_api', 10, 2 );</pre>
<p>Ese código es una base de partida, pues cada proveedor tiene su formato, así que la estructura del cuerpo la sacas de su documentación.</p>
<p>Fíjate en que aquí llamo al registro a mano, porque al cortocircuitar <code>wp_mail()</code> los ganchos de éxito y de fallo del núcleo ya no se disparan.</p>
<p>Y ojo con lo demás, <strong>si cortocircuitas <code>wp_mail()</code> te quedas tú al mando de todo</strong>, incluidos los adjuntos, las cabeceras personalizadas y el juego de caracteres, que en el ejemplo no están contemplados.</p>
<p>Para una web que solo manda avisos de texto va sobrado, para una tienda con facturas adjuntas necesitas bastante más código.</p>
<h2>¿Funciona?</h2>
<p>No te fíes de que no salte ningún error, eso no significa nada. Pide un restablecimiento de contraseña desde la pantalla de acceso con un usuario cuyo correo esté en otro proveedor, y mira la bandeja y el spam.</p>
<p>Si no llega, abre el archivo de registro, que ahí tienes el motivo. Y si quieres además el detalle en el log de PHP, activa la depuración en <code>wp-config.php</code>:</p>
<pre>define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );</pre>
<p>Los mensajes suelen ser explícitos. Si dice que la autorización ha fallado revisa usuario y contraseña. Si dice que no puede conectar o que la conexión se ha rechazado el problema es el puerto, y ahí no hay código que valga.</p>
<h2>Lo que sigues sin tener</h2>
<p>Con lo de arriba tienes envío verificado y registro de correos, que es el 80% de lo que dan los plugins, pero te falta lo siguiente:</p>
<ul>
<li><strong>El botón de prueba</strong>: que parece una tontería hasta que estás cambiando de proveedor un viernes por la tarde.</li>
<li><strong>La conexión de reserva</strong>: para que si el proveedor principal se cae entre el segundo sin que se pierda nada.</li>
<li><strong>Los reintentos y la cola</strong>: que evitan que un pico de envíos te ralentice la web.</li>
<li><strong>La pantalla de consulta</strong>: porque leer un archivo de texto por FTP no es lo mismo que filtrar en una tabla del escritorio.</li>
</ul>
<p>Y hay un caso donde directamente no compensa y es <strong>si tu correo está en Gmail o en Microsoft y quieres usar OAuth, olvídate de hacerlo a mano</strong>, porque necesitas una librería externa, gestionar tokens y renovarlos. Ahí un plugin te lo resuelve con dos clics y tú tardarías muchas horas en tener algo peor.</p>
<h2>Entonces, ¿código o plugin?</h2>
<p>Mi criterio después de bastantes webs de cliente es que si la web la mantienes tú, va por control de versiones y el correo es de dominio propio contra un servidor que controlas, el mu-plugin es perfecto y además no te añade tablas ni panel de ajustes.</p>
<p>Si la web la va a tocar otra persona, si el correo va por Gmail o Microsoft, o si es una tienda donde perder un aviso de pedido cuesta dinero, instala un plugin con registro incluido en la versión gratuita. Los tienes comparados en <a href="https://ayudawp.com/wordpress-no-manda-emails/" target="_blank" rel="ugc noopener">WordPress no manda emails, y casi nunca es culpa de WordPress</a>, que además cubre la parte de SPF, DKIM y DMARC, sin la cual todo esto sirve de poco.</p>
<p>Si le das una vuelta al código y lo mejoras, cuéntamelo en los comentarios, que estas cosas se afinan entre todos.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/smtp-wordpress-sin-plugins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Passkeys en WordPress</title>
		<link>https://ayudawp.com/passkeys/</link>
					<comments>https://ayudawp.com/passkeys/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 06:28:16 +0000</pubDate>
				<category><![CDATA[Seguridad WordPress]]></category>
		<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[passkey]]></category>
		<category><![CDATA[Vigilante]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160117</guid>

					<description><![CDATA[Vaya, por fin un artículo que te cuenta todo sobre las passkeys, y además explicado en detalle y con una guía sencilla para usuarios de WordPress.]]></description>
										<content:encoded><![CDATA[<p>Cuando entras en una web con una <code>passkey</code>, tu navegador mete el dominio dentro de lo que firma. Eso significa que <strong>una web falsa montada en otro dominio no puede reproducir esa firma</strong> ni poniéndose en medio de la conversación, y <strong>ahí se acaba el <em>phishing</em></strong>, que llevamos veinte años intentando parchear con avisos, con formación a los usuarios y con esconder la pantalla de acceso.</p>
<p>¿Suena bien, a que sí?, porque es lo único que importa de verdad de este asunto, y porque casi todo lo demás sobre passkeys se queda en lo bonito de entrar con la huella, y <strong>lo de la huella es la parte cómoda, no la parte importante.</strong></p>
<p>Pero hay una segunda mitad de la historia que es la de verdad importante, que es la que <strong>te puede dejar fuera de tu propia web o darte una falsa sensación de seguridad</strong>. ¿Te animas?, es una historia apasionante, y de rabiosa actualidad.</p>
<h2>Qué es una passkey, y sobre todo qué no es</h2>
<p>Una passkey es <strong>un par de claves criptográficas</strong>. La privada se queda en tu dispositivo o en tu gestor de contraseñas y no sale de ahí nunca, y la pública se guarda en la web donde te identificas.</p>
<p>Cuando entras, la web te manda un desafío, tu dispositivo lo firma con la clave privada después de comprobar que eres tú (huella, cara o PIN), y la web verifica la firma con la clave pública que ya tenía.</p>
<p><strong>Lo que se guarda en tu servidor son claves públicas, o sea, información que no sirve para entrar en ningún sitio.</strong></p>
<p>Si mañana te roban la base de datos entera el atacante se lleva un puñado de claves públicas y un rato de trabajo perdido. Compara eso con lo que pasa cuando se filtra una tabla de contraseñas.</p>
<p>Y aquí viene la parte más confusa, donde a veces nos liamos, porque «<strong>acceso sin contraseña</strong>» se ha convertido en un cajón donde cabe cualquier cosa.</p>
<p>Estos son los 4 métodos de acceso sin contraseña que solemos confundir, para tenerlo claro antes de empezar:</p>
<table>
<tbody>
<tr>
<th style="text-align: left;">Método</th>
<th style="text-align: left;">Qué puede robarse</th>
<th style="text-align: left;">Si te clonan el dominio</th>
<th style="text-align: left;">De qué depende</th>
</tr>
<tr>
<td>Contraseña</td>
<td>La contraseña entera, y sirve en cualquier sitio donde la repitas</td>
<td>Caes</td>
<td>De tu memoria y de tu gestor</td>
</tr>
<tr>
<td>Enlace o código por email</td>
<td>El enlace o el código, mientras no caduque</td>
<td>Caes</td>
<td>De tu correo, entero</td>
</tr>
<tr>
<td>Código con aplicación (TOTP)</td>
<td>El código del momento, y también el secreto inicial</td>
<td>Caes, si te lo piden en la web falsa</td>
<td>De tu móvil y de tus códigos de respaldo</td>
</tr>
<tr>
<td>Passkey</td>
<td>Nada utilizable</td>
<td>No caes</td>
<td>De tu dispositivo o de tu cuenta de sincronización</td>
</tr>
</tbody>
</table>
<p>Fíjate en <strong>la columna del dominio clonado</strong>, porque es la única en la que la <code>passkey</code> juega en otra liga.</p>
<p>El código de seis dígitos de tu aplicación de autorización es un secreto compartido que tú tecleas, así que si te lo tecleas en la web del malo, se lo has dado.</p>
<p><strong>La passkey no la tecleas, la firma tu dispositivo, y tu dispositivo comprueba el dominio antes de firmar</strong>.</p>
<p>Si quieres repasar los otros dos métodos con calma, tengo escrito sobre <a href="https://ayudawp.com/2fa-wordpress/" target="_blank" rel="ugc noopener">la identificación de dos factores en WordPress</a> y sobre <a href="https://ayudawp.com/acceder-wordpress-sin-contrasena/" target="_blank" rel="ugc noopener">el acceso mediante enlace mágico</a>, que sigue teniendo sentido para lo que tiene es, para la comodidad.</p>
<h2>El phishing se acabó</h2>
<p>Ya te he dicho lo bueno, así que toca la letra pequeña, porque <strong>la passkey blinda la puerta, no toda la casa.</strong> Estas cosas te siguen pudiendo pasar exactamente igual:</p>
<ul>
<li>Que te roben la cookie de sesión una vez has entrado, con malware o con un <code>cross-site scripting</code>: La passkey se usa en el momento de identificarte, y a partir de ahí eres una sesión abierta como cualquier otra. Si sospechas que ha pasado, lo que echa a todo el mundo fuera de golpe es renovar las claves de seguridad del <code>wp-config.php</code>, tal como cuento en la guía para <a href="https://ayudawp.com/limpiar-wordpress-hackeado-infectado/" target="_blank" rel="ugc noopener">limpiar y recuperar un WordPress hackeado</a>.</li>
<li>Que tengas el equipo comprometido: Si el malo está dentro de tu ordenador, ya has perdido y da igual cómo entres.</li>
<li>Que te ataquen por el método de respaldo: Si dejas la contraseña activa, y vas a dejarla, el phishing simplemente irá a por la contraseña, que es lo que hacen los atacantes desde siempre, ir por donde menos cuesta.</li>
<li>Que te secuestren el correo y usen el «¿Has olvidado tu contraseña?», que sigue ahí, funcionando como el primer día.</li>
</ul>
<p>Nada de esto es un argumento contra las passkeys, ojo, es un argumento contra venderlas como si fueran un campo de fuerza. Sirven para lo que sirven, y lo que hacen lo hacen mejor que ninguna otra cosa que tengamos.</p>
<h2>Quién las usa ya, y quién ha ido más lejos</h2>
<p>Google, Apple y Microsoft las ofrecen por defecto en sus cuentas personales, y ahí es donde la mayoría de la gente tiene ya una passkey sin haberse dado cuenta.</p>
<p>La FIDO Alliance, que es quien está detrás del estándar, publicó en mayo su informe anual y calcula unos <strong>5.000 millones de passkeys en uso en el mundo, con un 75 % de personas que tienen al menos una activada y un 49 % que las usa habitualmente</strong> cuando la web se lo permite.</p>
<p>Un aviso de rigor sobre esas cifras es que la muestra es de diez países, y España no está entre ellos, así que sirven para ver la tendencia, no para calcular cuántos de tus clientes van a saber qué hacer cuando les salga el aviso.</p>
<p>El caso que mejor muestra hasta dónde llega esto es el de OpenAI, que ha sacado un modo de seguridad reforzada para las cuentas de ChatGPT en el que la contraseña se desactiva, hay que registrar dos credenciales entre passkeys y llaves físicas, y se elimina la recuperación por correo y por SMS.</p>
<p>La frase que hay que subrayar de su documentación es que <strong>una vez lo activas, ni siquiera su soporte puede devolverte la cuenta</strong>. No todo iba a ser bonito, las IAs, ya sabes.</p>
<p>Ahí tienes la ventaja y el peligro en la misma frase, y por eso este artículo dedica más espacio a la recuperación que al registro.</p>
<p>Y por si te queda lejos, dos ejemplos que te tocan de cerca. Tu cuenta de WordPress.org admite llaves de seguridad desde la pestaña de cuenta y seguridad de tu perfil, y WordPress.com también las admite como verificación de acceso.</p>
<p>O sea que el proyecto usa passkeys para proteger a la gente que hace WordPress, mientras que <strong>el núcleo de WordPress sigue sin traer nada de esto para tu web</strong>. Ni en la versión actual ni en las siguientes, que no mencionan <code>WebAuthn</code> por ningún lado.</p>
<h2>Los dos modelos de Passkey ¿cuál es el que nos interesa?</h2>
<p>Esto es quizás lo que más te va a seguir de todo lo que llevo escrito, así que céntrate un poquito, que te toca decidir.</p>
<h3>Passkey como sistema de acceso en dos pasos</h3>
<p>Metes usuario y contraseña como siempre, y en la pantalla siguiente, en vez del código de seis dígitos, firmas con la huella o con la llave. La contraseña sigue funcionando como red de seguridad.</p>
<p>Es el modo conservador, es el que menos soporte genera y es donde vas a acabar tú, casi seguro. Ganas el fin del phishing y te quitas de encima el baile del código de seis dígitos, que es lo que odia todo el mundo de la verificación en dos pasos.</p>
<h3>Passkey como acceso completo</h3>
<p>No hay contraseña. Pones el nombre de usuario, o ni eso, firmas y estás dentro. Es el modo que cambia de verdad el modelo de amenaza, y también el que te obliga a tener un plan de recuperación de adulto.</p>
<h3>La mezcla perfecta</h3>
<p>Y luego está esto, que es donde casi todo la mayoría nos equivocamos, incluido yo, por supuesto, cuando empecé a darle vueltas al asunto.</p>
<p>El phishing se acabó el primer día con el modo de doble verificación, pero el tener que completar credenciales no se acaba hasta que apagas la contraseña. Y esto no es porque la passkey no sea buena, sino porque mientras la contraseña siga siendo una credencial válida el atacante sigue pudiendo probar pares de usuario y contraseña contra tu web.</p>
<p>Aunque no se complete el acceso porque falta la passkey, obtiene lo que de verdad busca, que es confirmar que ese par funciona para ir luego a probarlo al correo de esa persona, o a su banco, o a los otros quince sitios donde repite contraseña.</p>
<p>Esto significa que <strong>en el modo de doble verificación en dos pasos tu web deja de ser la puerta por la que entran, pero sigue siendo quién les dice si la llave que tienen es buena o no</strong>.</p>
<p>Por eso la secuencia sensata es esta, y por eso el modo sin contraseña tiene que ir siempre acompañado de dos credenciales registradas y de códigos de respaldo guardados fuera del ordenador.</p>
<p>No es prudencia histérica, es que el día que quitas la contraseña te quedas sin alternativa.</p>
<h3>Un paso o dos, y por qué no hace falta pedir también el código</h3>
<p><strong>Una passkey que exige verificación</strong> de usuario (huella, cara o PIN antes de firmar) ya <strong>son dos pasos por sí sola</strong>: algo que tienes, que es el dispositivo o la credencial, y algo que eres o que sabes, que es lo que desbloquea la firma.</p>
<p><strong>Pedir además el código de seis dígitos es pedir dos veces lo mismo.</strong> Si la credencial no lleva verificación de usuario entonces sí es un solo factor y no debería contar como doble verificación.</p>
<p>Y ahora otro matiz que tiene consecuencias prácticas gordas.</p>
<h3>¿Passkey sincronizada o atada al dispositivo?</h3>
<p>Hay dos tipos de passkey:</p>
<ul>
<li><strong>Sincronizada</strong>: está en tu llavero de iCloud, en el gestor de Google o en el gestor que uses, y aparece sola en todos tus dispositivos.</li>
<li><strong>Atada al dispositivo</strong>: esta nace y muere en el dispositivo donde la creaste, y ese es el caso de una llave física tipo YubiKey o de Windows Hello.</li>
</ul>
<p>La diferencia es relevante por dos motivos. El primero es de seguridad, porque en una passkey sincronizada, el «algo que tienes» ya no es el móvil, es la cuenta que sincroniza. Quien te comprometa esa cuenta tiene tus passkeys en todas partes.</p>
<p>Esto tiene matices, porque las passkeys de iCloud van cifradas de extremo a extremo y sacarlas de ahí exige la cuenta más el código del dispositivo, así que el listón está bastante más alto que robar una contraseña. Pero el factor de posesión se ha desplazado del cacharro a la cuenta, y eso es un cambio de verdad.</p>
<p>El segundo motivo es de recuperación, y de ese hablamos más abajo porque cambia por completo el consejo que te tengo que dar.</p>
<p>El detalle práctico es que <strong>ni el navegador ni el sistema operativo te dicen qué tipo de passkey estás creando.</strong> La propia credencial lo declara en la ceremonia mediante dos indicadores técnicos, y esa es la única forma fiable de saberlo.</p>
<p>Fíjate hasta qué punto está la cosa revuelta, que a día de hoy, Windows Hello genera credenciales atadas al dispositivo mientras que la sincronización en Windows llega por el gestor del navegador, por encima del sistema de autorización del sistema.</p>
<p>Y hasta Chrome en Windows puede guardarte la passkey en Windows Hello aunque tú creyeras estar creando una passkey sincronizada de Google.</p>
<p>O sea que el usuario ni lo elige ni lo sabe. Guarda esta idea para el final del artículo, que lo vamos a repasar.</p>
<h2>Las puertas que la passkey no cierra en WordPress</h2>
<p>WordPress no tiene una puerta de entrada, tiene varias, y la passkey protege la pantalla de acceso, nada más. Mientras la contraseña siga siendo válida, hay dos caminos que autorizan sin pasar por esa pantalla y se saltan tu passkey del todo:</p>
<ul>
<li><strong>XML-RPC:</strong> Si lo tienes activo, acepta usuario y contraseña directamente. Es la puerta que llevan años usando para los ataques de fuerza bruta masivos, precisamente porque no pasa por el formulario.</li>
<li><strong>Las contraseñas de aplicación:</strong> Son una funcionalidad del propio WordPress, muy útil, que permite autenticarse contra la API REST con una credencial que el usuario genera desde su perfil. No pasa por la pantalla de acceso, no pasa por la doble verificación y no pasa por tu passkey.</li>
</ul>
<p>Y quedan dos caminos más que no son un fallo de nadie pero que hay que tener en la cabeza, que son el restablecimiento de contraseña por correo, que sigue siendo una vía de vuelta perfectamente válida para quien controle el buzón, y los accesos del hosting, que con el gestor de archivos o con phpMyAdmin entran sin preguntarle nada a WordPress.</p>
<p>La conclusión práctica, y perdona que sea pesado, es que <strong>el modo de verificación en dos pasos solo es tan fuerte como esos dos interruptores.</strong></p>
<p>Si activas passkeys y dejas XML-RPC abierto y las contraseñas de aplicación campando a sus anchas, has puesto una puerta blindada en una casa con la ventana del patio abierta.</p>
<p>Lo bueno es que cerrarlas es fácil, porque casi todos los plugins de seguridad decentes lo traen. <a href="https://wordpress.org/plugins/wordfence/" target="_blank" rel="nofollow noopener">Wordfence</a> tiene control de XML-RPC, y en el mío, <a href="https://es.wordpress.org/plugins/vigilante/" target="_blank" rel="nofollow noopener">Vigilante</a>, tienes el bloqueo de XML-RPC y la restricción de la API REST en tres modos, además del modo bajo ataque para cuando la cosa se pone fea.</p>
<p>Si no usas ninguno de estos plugins de seguridad, al menos comprueba que el tuyo tanga ambas cosas antes de ponerte con las passkeys, porque el orden importa.</p>
<h2>Sin plugin no hay passkeys, y no es por pereza</h2>
<p>Te lo digo claro para que no pierdas la tarde buscando: no hay forma razonable de tener passkeys en WordPress sin un plugin.</p>
<p>Hace falta JavaScript en la pantalla de acceso para lanzar la ceremonia del navegador, dos rutas nuevas en el servidor para el registro y para la firma, una tabla donde guardar las claves públicas y sus indicadores, y la verificación criptográfica de cada firma. Todo eso junto es un plugin, lo llames como lo llames y lo pongas donde lo pongas.</p>
<p>Las dos alternativas que puede que encuentres por ahí o te cuente tu IA favorita no valen.</p>
<ul>
<li>Meterlo en el <code>functions.php</code> del tema es la peor idea posible, porque el día que cambies de tema te quedas fuera de tu propia web con la ceremonia a medias.</li>
<li>Delegar la identificación en un proveedor externo te ata a un servicio de pago que se queda con tus usuarios, que es justo lo contrario de lo que buscas si has llegado hasta aquí.</li>
</ul>
<p>Lo que sí puedes exigirle a un plugin es que la verificación se haga en tu servidor, sin librerías externas ni llamadas a terceros. Eso es perfectamente posible, y es lo que separa un plugin honesto de un intermediario disfrazado de plugin.</p>
<h2>Qué plugin WordPress usar según lo que necesites</h2>
<p>No pongo versiones ni fechas a propósito, porque esto se mueve rápido y un artículo con números concretos nace caducado. Comprueba siempre el estado actual en la ficha de cada uno.</p>
<h3>Wordfence</h3>
<p>Es la opción por volumen, con varios millones de instalaciones, y ha incorporado passkeys tanto en la versión gratuita como en la de pago, para cualquier perfil de usuario y con integración de WooCommerce para las pantallas de cuenta de cliente.</p>
<p>Su propia documentación avisa de que la compatibilidad para multisitio es limitado por ahora, y más abajo te explico por qué eso no es dejadez suya.</p>
<p>Si ya usas Wordfence no busques más y quédate donde ahí. Si te lo estás planteando por las passkeys, ten en cuenta que te llevas el cortafuegos y el escáner en el mismo paquete, para bien y para mal. Te reconozco que no es santo de mi devoción, y creé Vigilante precisamente por ello, pero es de justicia reconocer sus virtudes (por pocas que sean).</p>
<h3>WP 2FA, de Melapress</h3>
<p>Trae passkeys en la versión gratuita, con lo que a mí me parece su mejor baza, que son las políticas por perfil de usuario con periodo de gracia.</p>
<p>Si tienes que sacar adelante una web con quince editores y no puedes ir uno por uno pidiéndoles por favor que se configuren el acceso, esto es lo que quieres. El asistente de configuración está bien pensado para gente que no es técnica.</p>
<h3>El plugin oficial Two Factor, y su extensión</h3>
<p><a href="https://wordpress.org/plugins/two-factor/" target="_blank" rel="nofollow noopener">Two Factor</a> es el plugin de doble factor de WordPress.org, lo mantiene gente del núcleo, tiene cien mil instalaciones y es una maravilla para TOTP, correo y códigos de respaldo.</p>
<p><strong>Pero no trae passkeys</strong>, es más, la compatibilidad con las llaves de seguridad antiguas la ha quitado porque los navegadores dejaron de admitir aquel estándar, así que ahora mismo va menos servido que antes en ese apartado.</p>
<p>Para tener passkeys necesitas instalar además <a href="https://wordpress.org/plugins/two-factor-provider-webauthn/" target="_blank" rel="nofollow noopener">el complemento WebAuthn</a>, que es de un desarrollador externo, tiene mil instalaciones y exige una versión de PHP más alta que la que pide el propio WordPress. Funciona bien, que conste, y quien lo mantiene sabe lo que hace.</p>
<p>Pero que la solución oficial para passkeys en WordPress sea «instálate estos dos y cruza los dedos» dice bastante de por dónde va la prioridad del proyecto en este asunto. La propuesta de código para meter WebAuthn dentro del plugin oficial lleva años abierta.</p>
<p>Mi consejo es que si ya tienes Two Factor montado y funcionando, añadir el complemento es el camino menos lioso, pero si empiezas de cero hay opciones más completas y mejor resueltas.</p>
<h3>Secure Passkeys y WP-WebAuthn</h3>
<p>Los dos son plugins dedicados solo a esto, sin cortafuegos ni escáner ni nada más, y ahí está su gracia.</p>
<p>Secure Passkeys tiene el autorrelleno, que es el detalle que de verdad hace que la experiencia sea buena, porque la passkey te aparece sola al pinchar en el campo de usuario sin tener que darle a ningún botón.</p>
<p>WP-WebAuthn permite el acceso sin escribir siquiera el nombre de usuario, aunque su soporte para multisitio sigue estando en pruebas y necesita extensiones de PHP que no todos los alojamientos compartidos traen puestas.</p>
<p>Si tu web ya tiene una suite de seguridad, no metas un segundo plugin que toque el acceso.</p>
<h3>Vigilante (próximamente)</h3>
<p>Y ahora el mío, con el aviso por delante para que nadie se lleve un chasco, porque <strong>Vigilante (aún) no ofrece passkeys.</strong></p>
<p>Ofrece verificación en dos pasos con aplicación de autenticación y con códigos por correo, con dispositivos de confianza y con obligación por perfil de usuario, así que si lo instalas ahora mismo buscando passkeys te vas a quedar con las ganas. Están apuntadas en la lista de tareas, eso sí.</p>
<p>Te cuento lo que va a llevar, y sobre todo por qué, porque el criterio te sirve para juzgar a los otros cuatro aunque al final acabes con cualquiera de ellos:</p>
<ul>
<li><strong>En dos tiempos:</strong> Primero la passkey como segundo factor, aprovechando entero el andamiaje del doble factor que ya está montado (pantalla intermedia, gestión en el perfil, dispositivos de confianza, perfiles obligados y periodo de gracia). Después el acceso sin contraseña, que es donde está todo lo caro y lo delicado.</li>
<li><strong>Una passkey con verificación de usuario cuenta como doble factor, y no se pide el código encima:</strong> Si la credencial no lleva verificación de usuario, entonces no cuenta y sigue haciendo falta el segundo paso.</li>
<li><strong>Aviso en la propia pantalla al activar el método:</strong> Te dirá si tienes XML-RPC o las contraseñas de aplicación abiertos, que es exactamente el agujero del que hemos hablado más arriba. De poco sirve que el plugin traiga los interruptores si no te avisa de que los tienes en la posición equivocada justo cuando importa.</li>
<li><strong>Cada credencial, etiquetada como sincronizada o atada al dispositivo</strong> en la lista del perfil: Esa información viene ya en la propia ceremonia, así que enseñarla no cuesta nada y te deja decidir a ti en lugar de decidir por ti.</li>
<li><strong>La contraseña sigue activa por defecto</strong>, y el modo solo passkey es opcional: Exigiendo tener dos credenciales registradas y reutiliza los códigos de respaldo que ya conoces. El administrador único no se queda fuera, por diseño.</li>
<li><strong>Nada de servicios externos ni de cuentas de terceros:</strong> La firma se verifica en tu propio servidor, sin librerías externas ni llamadas a nadie, y lo que se guarda en tu base de datos son claves públicas.</li>
</ul>
<p>Esto último no es un adorno, y por eso lo pongo aquí y no en la ficha del plugin. Tu verás, yo solo te aviso, si un plugin de passkeys te pide crear una cuenta en algún sitio, lo que te está vendiendo no es una passkey, es un intermediario.</p>
<h2>Qué necesita tu web para poder usar passkeys</h2>
<p>Seguro que cumples, pero esta es la lista, para que no te lleves decepciones.</p>
<ul>
<li><strong>HTTPS, obligatorio:</strong> Y no es una recomendación mía, es que el navegador no ejecuta la ceremonia en una web sin certificado. La única excepción es <code>localhost</code>, para que los que desarrollamos podamos hacer pruebas.</li>
<li><strong>Un dominio estable:</strong> Las credenciales se atan al dominio, así que el día que cambies de dominio todas las passkeys registradas dejan de valer y todo el mundo tiene que registrarlas otra vez. Si tienes una migración de dominio a medio plazo, haz la migración primero y las passkeys después.</li>
<li><strong>Extensiones de PHP, según el plugin:</strong> Algunos piden extensiones concretas para la parte criptográfica, y en alojamiento compartido de gama baja no siempre están activadas. Si el plugin te da error al registrar la primera credencial, mira eso antes de volverte loco.</li>
<li><strong>Multisitio, el punto flojo:</strong> Como la credencial se ata al dominio, en una red de subdominios una passkey registrada en una web de la red no sirve en las demás. La forma de arreglarlo pasa por atar la identidad de la red al dominio padre en lugar de al de cada web, y hay plugins que ya lo hacen usando la constante <code>COOKIE_DOMAIN</code> si la tienes definida. En una red de subdirectorios el problema no existe porque el dominio es el mismo para todas. Si administras multisitio, prueba esto en un clon antes de tocar la red buena.</li>
</ul>
<p><strong>Los entornos de pruebas se comportan distinto</strong>, porque el dominio es otro. Las passkeys que registres en el clon no te valen en producción, y al revés tampoco.</p>
<h2>Cómo añadir passkeys en WordPress de manera segura y paso a paso</h2>
<p>El orden de estos pasos no es decorativo, cada uno depende del anterior:</p>
<ol>
<li>Cierra XML-RPC y revisa las contraseñas de aplicación existentes antes de tocar nada del acceso. Si no haces esto lo demás no sirve de nada.</li>
<li>Empieza por ti y por el resto de administradores, nunca por los usuarios. Y hazlo un día laborable por la mañana, no un viernes a las ocho de la tarde.</li>
<li>Registra dos credenciales por persona desde el primer momento, no una. La segunda es la que te salva.</li>
<li>Genera los códigos de respaldo y guárdalos fuera del ordenador, en el gestor de contraseñas o en papel dentro de un cajón, que sigue siendo un sitio estupendo.</li>
<li>Prueba la recuperación de verdad, con una cuenta de prueba a la que le quites el acceso a propósito. Un plan de recuperación sin probar no es un plan, es una intención.</li>
<li>Solo entonces amplía al resto del equipo, con periodo de gracia si tu plugin lo permite.</li>
<li>Y el modo sin contraseña, al final del todo, cuando lleves semanas con lo anterior rodado y sepas que todo el mundo tiene sus dos credenciales.</li>
</ol>
<p>Sobre las políticas más estrictas, tipo obligar a los administradores a usar solo credenciales atadas al dispositivo, mi consejo es que no lo hagas salvo que sepas muy bien lo que estás montando.</p>
<p>El coste de esa política no es igual para todos: quien administre desde Windows la cumple gratis con Windows Hello, y quien administre desde un Mac o un iPhone se ve obligado a comprar una llave física.</p>
<p><strong>Un mismo requisito que trata distinto a dos personas del mismo equipo es un generador de tickets de soporte, no una medida de seguridad.</strong> Y como decíamos antes, una política que depende de algo que la persona no elige conscientemente genera soporte, no seguridad.</p>
<p>Añade que todo esto depende del comportamiento del autenticador del sistema operativo, que puede cambiar con una actualización que ni has pedido ni controlas. Atar tu política de acceso a eso es construir sobre arena.</p>
<h2>¿Y si algo sale mal?</h2>
<p>Y aquí es donde el tipo de passkey que tenga cada uno lo cambia todo. Hay dos planes de recuperación distintos, no uno.</p>
<ul>
<li><strong>Si la passkey es sincronizada</strong>, la pérdida del móvil no es una catástrofe, porque la credencial sigue en el llavero de tu cuenta y aparecerá sola en el aparato nuevo en cuanto inicies sesión. Tu riesgo real no es perder el trasto, es perder el acceso a la cuenta que sincroniza. O sea que lo que hay que proteger con uñas y dientes es esa cuenta, no el teléfono.</li>
<li><strong>Si la passkey está atada al dispositivo</strong>, y hablo de llaves físicas o de Windows Hello, el día que se rompe el portátil o se pierde la llave esa credencial ha muerto y no vuelve. Por eso lo de registrar dos, y por eso lo de que la segunda esté en otro trasto distinto y no en el mismo.</li>
</ul>
<p>Los tres escenarios que te puedes encontrar:</p>
<ul>
<li><strong>Cambio de ecosistema</strong>, del iPhone al Android o al revés: Las passkeys sincronizadas no cruzan de un llavero a otro con la alegría que a uno le gustaría, así que planifica el cambio antes de venderte el móvil viejo.</li>
<li><strong>El editor que se marcha:</strong> Sus passkeys viven en sus dispositivos, así que tú no puedes borrárselas del bolsillo. Lo que sí puedes es eliminar las credenciales registradas desde el perfil de usuario en tu web, que es lo que corta el acceso de verdad. Ponlo en tu proceso de baja de personal, junto a lo de siempre.</li>
<li><strong>El administrador único:</strong> Si eres el único administrador de tu web, no actives nunca el modo sin contraseña sin tener dos credenciales y los códigos de respaldo comprobados. Y si aun así te quedas fuera, siempre queda desactivar el plugin renombrando su carpeta desde el gestor de archivos de tu hosting, que es la salida de emergencia de toda la vida.</li>
</ul>
<h2>Preguntas rápidas</h2>
<ul>
<li><strong>¿Las passkeys sustituyen al doble factor?</strong> Si llevan verificación de usuario, sí, porque ya son dos pasos por sí solas. No hace falta pedir además el código de la aplicación.</li>
<li><strong>¿Puedo usar passkeys y seguir teniendo contraseña?</strong> Sí, y es lo normal y lo recomendable mientras te acostumbras. Ten claro que así el relleno de credenciales contra tu web sigue siendo posible.</li>
<li><strong>¿Funcionan en el móvil?</strong> Sí, y de hecho es donde mejor van, porque la huella o la cara están ahí mismo.</li>
<li><strong>¿Y si mis usuarios no tienen lector de huella?</strong> Sirve el PIN del dispositivo, y sirve una llave física por USB. Nadie se queda fuera por no tener biometría.</li>
<li><strong>¿Sirven para los clientes de mi tienda?</strong> Sí, hay plugins que las llevan a las pantallas de cuenta de WooCommerce. Piensa antes en el coste de soporte, porque tus clientes no son tu equipo y la mitad no sabe qué es un llavero de iCloud.</li>
<li><strong>¿Y si tengo la web en un alojamiento compartido normalito?</strong> Casi seguro que funciona. Comprueba que tienes HTTPS y mira los requisitos de extensiones del plugin que elijas.</li>
<li><strong>¿Puedo obligar a que todos los administradores usen passkeys?</strong> Sí, los plugins con políticas por perfil lo permiten. Da un periodo de gracia y avisa antes, que si no te llueven los correos.</li>
</ul>
<h2>Por dónde empezar desde ya</h2>
<p>Antes de tocar tu web, haz el ensayo con red entrando en tu perfil de <a href="https://make.wordpress.org/meta/handbook/tutorials-guides/configuring-two-factor-authentication/" target="_blank" rel="nofollow noopener">WordPress.org</a>, ahí ve a la pestaña de cuenta y seguridad, y registra una llave de seguridad. Se tarda medio minuto, es gratis y vas a entender en la práctica todo lo que te he contado aquí mucho mejor que leyéndolo otra vez.</p>
<p>Después, y ya en tu web, el primer paso no es instalar nada, es ir a comprobar si tienes XML-RPC abierto y qué contraseñas de aplicación hay creadas por ahí. Eso es lo que decide si tus passkeys van a servir para algo o van a ser un adorno caro.</p>
<p>Y si te has quedado con ganas de más sobre cómo se defiende el acceso a tu WordPress, tengo el <a href="https://ayudawp.com/fuerza-bruta/" target="_blank" rel="ugc noopener">plan de batalla contra los ataques de fuerza bruta</a>, que es la capa de debajo de todo esto.</p>
<p>Ahora te toca a ti decidir en qué modo te quedas, si en el cómodo o en el valiente. Y si te lanzas al segundo, cuéntamelo en los comentarios, que me interesa mucho saber cuánta gente se atreve a apagar la contraseña de verdad.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/passkeys/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vulnerabilidades que asustan, la IA comiéndose a Google y mis trucos favoritos del editor de bloques – #CrónicasWordPress #TrucosWordPress</title>
		<link>https://ayudawp.com/vulnerabilidades-que-asustan-la-ia-comiendose-a-google-y-mis-trucos-favoritos-del-editor-de-bloques-cronicaswordpress-trucoswordpress/</link>
					<comments>https://ayudawp.com/vulnerabilidades-que-asustan-la-ia-comiendose-a-google-y-mis-trucos-favoritos-del-editor-de-bloques-cronicaswordpress-trucoswordpress/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Fri, 11 Sep 2026 21:15:55 +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=160318</guid>

					<description><![CDATA[Ya está aquí el repaso de la semana, que entre el lunes y el miércoles ha dado para rato. El lunes toca #CrónicasWordPress, para ponernos al día de la actualidad y mojarme un poco, y el miércoles le llegó el turno al consultorio, que esta vez fue más de trucos que de dudas. Si te perdiste alguno de los dos directos, aquí te lo dejo masticado y con el enlace al vídeo entero al final de cada bloque.]]></description>
										<content:encoded><![CDATA[<p><!-- TÍTULO SUGERIDO (va en el campo Título del editor, no en el cuerpo): Vulnerabilidades que asustan, la IA comiéndose a Google y mis trucos favoritos del editor de bloques – #CrónicasWordPress #TrucosWordPress --></p>
<p>Ya está aquí el repaso de la semana, que entre el lunes y el miércoles ha dado para rato. El lunes toca <strong>#CrónicasWordPress</strong>, para ponernos al día de la actualidad y mojarme un poco, y el miércoles le llegó el turno al consultorio, que esta vez fue más de trucos que de dudas. Si te perdiste alguno de los dos directos, aquí te lo dejo masticado y con el enlace al vídeo entero al final de cada bloque.</p>
<h2>Crónicas del lunes: seguridad para echarse a temblar y la IA a lo suyo</h2>
<p>Empecé por seguridad, como casi siempre últimamente, porque la cosa no da tregua. Salieron a relucir varias vulnerabilidades en plugins muy instalados, de esos que tienes tú y tiene medio WordPress del planeta, así que ya sabes lo que toca, actualizar cuanto antes y no dejarlo para mañana.</p>
<p>Comenté el caso de un plugin de migración y copias de seguridad con un agujero de los serios, y los intentos de ataque que se están frenando estos días contra webs con Elementor. <strong>Si usas cualquiera de estos, para un momento y comprueba que estás en la última versión.</strong></p>
<p>Y hubo un tema que me tocó la moral, y es que un plugin bastante conocido se dedicaba a generar contraseñas de aplicación por su cuenta, sin pedirte permiso, para mandarlas a sus servidores. Lo acabaron retirando, pero el susto queda. <strong>Eso no es un despiste, es meterte la mano en el bolsillo mientras miras para otro lado.</strong></p>
<p>Después nos fuimos a las novedades, que también las hay. WordPress 7 sigue su camino con nuevas versiones a la vista y mejoras que van cayendo en el editor de bloques. No te suelto aquí cada número de versión porque para eso está el vídeo, pero la idea es que el proyecto se mueve y conviene tenerlo controlado.</p>
<p>Y llegamos al asunto del que no me canso de avisar, y es que la IA se está comiendo el tráfico de Google. Cada vez más búsquedas se resuelven con el resumen que sale arriba del todo y el usuario ni llega a pinchar en tu web. No es que Google se vaya a acabar mañana, seamos serios, pero <strong>si vives de las visitas de las búsquedas, esto va contigo y toca espabilar</strong>.</p>
<p>Lo comento con calma en el directo, con lo que yo estoy haciendo al respecto. También repasé alguna cosa más de la comunidad y un par de eventos que vienen, pero para no hacer esto eterno te remito al vídeo.</p>
<p>Aquí tienes la crónica completa, con todos los detalles, los enlaces y mi opinión sin filtro.</p>
<div class="ast-oembed-container " style="height: 100%;"><iframe loading="lazy" title="#CrónicasWordPress - Noticias, opinión sobre WordPress con Fernando Tellado" width="1600" height="900" src="https://www.youtube.com/embed/4hAOuJFf6Rc?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><a href="https://www.youtube.com/watch?v=4hAOuJFf6Rc" target="_blank" rel="noopener">Ver las #CrónicasWordPress del lunes en YouTube</a></p>
<h2>Doctor WordPress del miércoles: mis trucos favoritos del editor de bloques</h2>
<p>El miércoles me lié la manta a la cabeza y, en lugar del consultorio de siempre, monté una sesión con los trucos del editor de bloques que más uso yo en el día a día. Nada de teoría rara, cosas que te ahorran tiempo desde el minuto uno. Estos fueron los que enseñé:</p>
<ul>
<li><strong>El resumen del documento:</strong> el panel que te muestra el esquema con la lista de bloques, el número de palabras y el tiempo de lectura de un vistazo.</li>
<li><strong>La barra y el Markdown:</strong> escribes «/» para insertar cualquier bloque al vuelo, y trucos de Markdown como «##» para un encabezado o «&gt;» para una cita, sin soltar el teclado.</li>
<li><strong>La vista de lista:</strong> tenerla abierta para moverte entre bloques anidados y reordenarlos sin volverte loco ni romper nada.</li>
<li><strong>La visibilidad por dispositivo:</strong> mostrar u ocultar un bloque en móvil, tablet o escritorio según te interese.</li>
<li><strong>Buscar y reemplazar dentro de los bloques:</strong> para cambiar un texto en toda la entrada de una vez, sin ir bloque por bloque a mano.</li>
</ul>
<p>Y ya puestos, enseñé un par de plugins que uso para rizar el rizo, uno para controlar dónde se ve cada contenido y otro para alternar entre el editor clásico y el de bloques cuando la ocasión lo pide. Esta vez cayeron menos preguntas del público que otras semanas, así que quedó una sesión bien cargadita de práctica.</p>
<p>Tienes el directo entero, con las demostraciones paso a paso, aquí:</p>
<div class="ast-oembed-container " style="height: 100%;"><iframe loading="lazy" title="Mis mejores trucos para el editor de bloques de WordPress #TrucosWordPress" width="1600" height="900" src="https://www.youtube.com/embed/_v236NfXUEk?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><a href="https://www.youtube.com/watch?v=_v236NfXUEk" target="_blank" rel="noopener">Ver el #DoctorWordPress del miércoles en YouTube</a></p>
<h2>Nos vemos en el próximo directo</h2>
<p>Y hasta aquí la semana. Te recuerdo que los directos son en abierto, los lunes las crónicas y los miércoles el consultorio, así que si tienes cualquier duda de WordPress, SEO, IA o casi de lo que sea, te vienes y preguntas sin cortarte. Nos leemos en los comentarios, aquí abajo, y no te pierdas ningún directo <a href="https://www.youtube.com/@AyudaWPes" target="_blank" rel="nofollow noopener">suscribiéndote al canal oficial de Ayuda WordPress en YouTube</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/vulnerabilidades-que-asustan-la-ia-comiendose-a-google-y-mis-trucos-favoritos-del-editor-de-bloques-cronicaswordpress-trucoswordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Qué plugin de SEO es más ligero y que consume menos recursos?</title>
		<link>https://ayudawp.com/plugin-seo-ligero/</link>
					<comments>https://ayudawp.com/plugin-seo-ligero/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 06:28:00 +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[AIOSEO]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[Rank Math]]></category>
		<category><![CDATA[SEOPress]]></category>
		<category><![CDATA[Slim SEO]]></category>
		<category><![CDATA[SureRank]]></category>
		<category><![CDATA[The SEO Framework]]></category>
		<category><![CDATA[Visibility]]></category>
		<category><![CDATA[Yoast]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160055</guid>

					<description><![CDATA[He medido memoria, consultas a la base de datos, tiempo de generación y peso de archivos de los principales plugins de SEO y estos son los resultados…]]></description>
										<content:encoded><![CDATA[<p>Vengo recomendando plugins de SEO para WordPress desde hace casi 20 años, y hace poco me lancé a publicar el mío propio, <a href="https://visibility.quest/es/" target="_blank" rel="noopener">Visibility</a>. Así que cuando un lector que lo usa, y hasta dice que le gusta, me preguntó <strong>cuánto pesaba de verdad frente a los plugins de SEO más instalados</strong>, no me pareció justo responderle ahí, a lo loco, como padre enamorado de su bebé.</p>
<p>Así que me recogí la coleta, pillé ocho plugins, <strong>The SEO Framework, Visibility, SureRank, Slim SEO, SEOPress, Yoast SEO, AIOSEO y Rank Math, además de Visibility</strong>, los instalé uno por uno en la misma instalación de WordPress y <strong>medí memoria, consultas a la base de datos, tiempo de generación y peso de archivos, siempre con el mismo contenido exacto</strong>.</p>
<p>Si quieres el detalle completo de cómo lo hice, lo tienes al final del artículo, primero <strong>vamos a ver los números, tabla por tabla</strong>, luego me cuentas…</p>
<h2>Lo que le cuesta a tu web servir una sola entrada</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160136 size-full" src="https://ayudawp.com/wp-content/uploads/2026/09/laboratorio-plugins-seo.jpg" alt="" width="1200" height="805" srcset="https://ayudawp.com/wp-content/uploads/2026/09/laboratorio-plugins-seo.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/laboratorio-plugins-seo-768x515.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/laboratorio-plugins-seo-240x160.jpg 240w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Esto es <strong>lo que añade cada plugin sobre una instalación sin ningún ajuste SEO activo</strong>, que en una entrada suelta se queda en 10,83 MB de memoria, 58 consultas y 25,6 ms. Cada fila es la diferencia contra esa base.</p>
<table>
<thead>
<tr>
<th>Plugin</th>
<th>Memoria</th>
<th>Consultas</th>
<th>Tiempo</th>
<th>PHP cargado</th>
</tr>
</thead>
<tbody>
<tr>
<td>The SEO Framework</td>
<td><span style="color: #008000;">+0,13 MB</span></td>
<td><span style="color: #008000;">−8</span></td>
<td><span style="color: #008000;">+1,2 ms</span></td>
<td>590 KB / 74 archivos</td>
</tr>
<tr>
<td><strong>Visibility</strong></td>
<td>+0,29 MB</td>
<td>−6</td>
<td>+2,3 ms</td>
<td><span style="color: #008000;">245 KB / 21 archivos</span></td>
</tr>
<tr>
<td>SureRank</td>
<td>+0,31 MB</td>
<td>+15</td>
<td>+12,7 ms</td>
<td>921 KB / 114 archivos</td>
</tr>
<tr>
<td>Slim SEO</td>
<td>+0,38 MB</td>
<td>+3</td>
<td>+4,7 ms</td>
<td>257 KB / 105 archivos</td>
</tr>
<tr>
<td>SEOPress</td>
<td>+0,40 MB</td>
<td>+1</td>
<td>+5,2 ms</td>
<td>1,5 MB / 242 archivos</td>
</tr>
<tr>
<td>Yoast SEO</td>
<td>+0,85 MB</td>
<td>+16</td>
<td>+4,3 ms</td>
<td><span style="color: #ff0000;">3,0 MB / 547 archivos</span></td>
</tr>
<tr>
<td>AIOSEO</td>
<td>+2,02 MB</td>
<td><span style="color: #ff0000;">+32</span></td>
<td><span style="color: #ff0000;">+22,5 ms</span></td>
<td>2,5 MB / 296 archivos</td>
</tr>
<tr>
<td>Rank Math</td>
<td><span style="color: #ff0000;">+3,85 MB</span></td>
<td>+7</td>
<td>+15,1 ms</td>
<td>1,5 MB / 241 archivos</td>
</tr>
</tbody>
</table>
<p>Cuando ves la tabla entera pasan <strong>dos cosas que no esperaba</strong>…</p>
<ol>
<li>Hay dos plugins, Visibility y The SEO Framework, con los que <strong>WordPress hace menos consultas a la base de datos que si no tuvieras ningún plugin de SEO instalado, consultas negativas de verdad, no es un error de la tabla</strong>. Lo que pasa es que ambos desactivan consultas que WordPress lanza por defecto y que ninguno de los dos necesita, eso ya es hilar fino.</li>
<li>Y luego está la sorpresa para muchos, porque resulta que <strong style="font-size: 16px;">Rank Math añade trece veces más memoria que los más ligeros para servir exactamente la misma página</strong><span style="font-size: 16px;">, con el mismo contenido y el mismo tema. En un hosting compartido con la memoria justa, o en una web con tráfico importante, esa diferencia se multiplica por cada visita simultánea, no es un número que se quede solo en la tabla, y me parece <strong>una burrada</strong>.</span></li>
</ol>
<p>Si te fijas en el orden de la tabla no es aleatorio. <strong>Los tres plugins que menos añaden, The SEO Framework, Visibility y Slim SEO</strong>, son también los tres que menos hacen por su cuenta, sin asistente de configuración, sin paneles de análisis en tiempo real, sin llamadas a servicios externos.</p>
<p><strong>Los que más consumen, Rank Math y AIOSEO</strong>, son también los que más funciones traen activadas por defecto. <strong>Pesar más no sale gratis</strong>, y tampoco es casualidad.</p>
<h2>El editor de bloques también se resiente, y bastante</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160134 size-full" src="https://ayudawp.com/wp-content/uploads/2026/09/carrera-rendimiento-plugins-seo.jpg" alt="" width="1200" height="805" srcset="https://ayudawp.com/wp-content/uploads/2026/09/carrera-rendimiento-plugins-seo.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/carrera-rendimiento-plugins-seo-768x515.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/carrera-rendimiento-plugins-seo-240x160.jpg 240w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p><strong>Publicar y editar también es rendimiento</strong>, aunque solo lo note quien escribe. Con esa misma entrada abierta en el editor de bloques, esto es lo que añade cada plugin:</p>
<table>
<thead>
<tr>
<th>Plugin</th>
<th>Memoria</th>
<th>Consultas</th>
<th>Tiempo</th>
<th>CSS + JS</th>
</tr>
</thead>
<tbody>
<tr>
<td>The SEO Framework</td>
<td><span style="color: #008000;">+0,09 MB</span></td>
<td><span style="color: #008000;">−10</span></td>
<td><span style="color: #000000;">−3,4 ms</span></td>
<td>82 KB</td>
</tr>
<tr>
<td><strong>Visibility</strong></td>
<td>+0,47 MB</td>
<td><span style="color: #000000;">−6</span></td>
<td>−0,8 ms</td>
<td><span style="color: #008000;">68 KB</span></td>
</tr>
<tr>
<td>Slim SEO</td>
<td>+0,39 MB</td>
<td>+1</td>
<td><span style="color: #008000;">−4,0 ms</span></td>
<td>187 KB</td>
</tr>
<tr>
<td>SureRank</td>
<td>+0,98 MB</td>
<td>+19</td>
<td>+17,2 ms</td>
<td>2,1 MB</td>
</tr>
<tr>
<td>SEOPress</td>
<td>+1,03 MB</td>
<td>+11</td>
<td>+6,7 ms</td>
<td>289 KB</td>
</tr>
<tr>
<td>Yoast SEO</td>
<td>+1,92 MB</td>
<td>+32</td>
<td>+42,9 ms</td>
<td><span style="color: #ff0000;">4,1 MB</span></td>
</tr>
<tr>
<td>AIOSEO</td>
<td>+5,23 MB</td>
<td><span style="color: #ff0000;">+85</span></td>
<td>+44,0 ms</td>
<td>1,2 MB</td>
</tr>
<tr>
<td>Rank Math</td>
<td><span style="color: #ff0000;">+7,21 MB</span></td>
<td>+32</td>
<td><span style="color: #ff0000;">+59,5 ms</span></td>
<td>1,8 MB</td>
</tr>
</tbody>
</table>
<p>Fíjate en <strong>AIOSEO, 85 consultas más solo por tener la entrada abierta en el editor</strong>, y en <strong>Rank Math, que suma 7,21 MB y casi 60 milisegundos por carga</strong>.</p>
<p>Los dos comparten algo, un panel lateral que analiza el contenido mientras escribes y recalcula una puntuación con cada pulsación. <strong>Ese análisis en directo es justo lo que más memoria y consultas consume</strong>, y es opcional lo mires como lo mires.</p>
<p>Si publicas cuatro entradas al año no lo vas a notar nunca. Ahora bien, si en tu web escriben varios autores a diario, o <strong>si ya te has preguntado alguna vez por qué el editor va lento</strong> cada vez que pulsas una tecla, esta tabla es la respuesta más clara que vas a encontrar.</p>
<p><strong>Visibility y The SEO Framework</strong> son los dos únicos que además <strong>cargan el editor más rápido que sin ningún plugin de SEO activo</strong>, y eso solo tiene una explicación, que ninguno de los dos monta ese panel de análisis en directo. Si lo echas de menos, esto no es para ti, y si nunca lo has usado <strong>acabas de ahorrarte varios megas por sesión de escritura</strong> sin perder nada.</p>
<h2>Lo que se queda instalado en tu WordPress … para siempre</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160137 size-full" src="https://ayudawp.com/wp-content/uploads/2026/09/peso-plugins-seo-grua.jpg" alt="" width="1200" height="805" srcset="https://ayudawp.com/wp-content/uploads/2026/09/peso-plugins-seo-grua.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/peso-plugins-seo-grua-768x515.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/peso-plugins-seo-grua-240x160.jpg 240w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Lo que un plugin deja en tu instalación en cuanto lo activas, <strong>tablas propias, eventos de cron, opciones que se leen en cada petición aunque no tengan nada que ver con el SEO</strong>, es otra letra pequeña que casi nadie mira antes de instalar.</p>
<table>
<thead>
<tr>
<th>Plugin</th>
<th>En disco</th>
<th>Tablas propias</th>
<th>Cron propio</th>
<th>Opciones autocargadas</th>
</tr>
</thead>
<tbody>
<tr>
<td>Slim SEO</td>
<td><span style="color: #008000;">892 KB</span></td>
<td>0</td>
<td>0</td>
<td>2 (7 B)</td>
</tr>
<tr>
<td><strong>Visibility</strong></td>
<td>971 KB</td>
<td>0</td>
<td>0</td>
<td><span style="color: #008000;">2 (3,3 KB)</span></td>
</tr>
<tr>
<td>The SEO Framework</td>
<td>2,2 MB</td>
<td>0</td>
<td>0</td>
<td>3 (4,9 KB)</td>
</tr>
<tr>
<td>SEOPress</td>
<td>8,3 MB</td>
<td>1 (16 KB)</td>
<td>0</td>
<td>7 (4,2 KB)</td>
</tr>
<tr>
<td>Rank Math</td>
<td>11,1 MB</td>
<td>2 (64 KB)</td>
<td><span style="color: #ff0000;">3</span></td>
<td><span style="color: #ff0000;">15 (10,4 KB)</span></td>
</tr>
<tr>
<td>Yoast SEO</td>
<td>16,0 MB</td>
<td>6 (304 KB)</td>
<td>2</td>
<td>7 (13,8 KB)</td>
</tr>
<tr>
<td>AIOSEO</td>
<td>16,4 MB</td>
<td><span style="color: #ff0000;">9 (448 KB)</span></td>
<td>0</td>
<td><span style="color: #ff0000;">6 (17,1 KB)</span></td>
</tr>
<tr>
<td>SureRank</td>
<td><span style="color: #ff0000;">19,8 MB</span></td>
<td>0</td>
<td>1</td>
<td>2 (54 B)</td>
</tr>
</tbody>
</table>
<p><strong>Slim SEO y Visibility son los dos plugins más ligeros en disco</strong> de los ocho, y comparten algo más importante todavía, que ni uno ni otro crea una tabla ni un evento de cron.</p>
<p><strong>La diferencia, y la razón por la que Visibility puede decir que es el único de los ocho sin ninguna llamada a un servidor externo</strong>, no sale en esta tabla, sale al mirar el código, que también he publicado para quien quiera comprobarlo por su cuenta.</p>
<p>Las opciones con <code>autoload</code> son la columna que menos se mira y la que más pesa de verdad, porque WordPress las lee enteras en cada petición a tu web, tenga que ver con el SEO o no.</p>
<p><strong>Rank Math pone en carga automática 10,4 KB repartidos en 15 opciones distintas</strong>, y eso se lee igual en tu portada, en tu tienda o en la página de contacto, aunque ninguna tenga una palabra clave que analizar.</p>
<p>Y luego está el cron. Cada evento programado depende de que alguien visite la web para dispararse, lo que en una web con poco tráfico puede acumular tareas pendientes sin que nadie se entere.</p>
<p><strong>Rank Math programa 3 eventos propios, Yoast 2 y SureRank 1</strong>. Los otros cinco, Visibility incluido, no programan ninguno.</p>
<p>Pesar menos solo vale la pena si haces lo mismo o casi. Sobre esa misma entrada que generé para las pruebas, los ocho emiten etiquetas Open Graph, marcado JSON-LD, url canonical y meta description, aunque con dos excepciones que merece la pena anotar.</p>
<p>SEOPress no publica <a href="https://ayudawp.com/json-ld/" target="_blank" rel="noopener">JSON-LD</a> con los ajustes por defecto (este ha sido una de mis mayores decepciones recientes), y Yoast no escribe <code>meta description</code> si no se la escribes tú a mano o lo configuras la plantilla de extracto automático.</p>
<p>El resto va prácticamente empatado en lo que entrega, así que en esta tabla <strong>no hay nada que justifique tanta diferencia de peso</strong> entre unos y otros. Lo que hace cada uno es casi lo mismo, lo que cuesta hacerlo no.</p>
<h2>Dónde no gana Visibility (cachislamar) y me lo apunto como tareas de mejora</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160132 size-full" src="https://ayudawp.com/wp-content/uploads/2026/09/analisis-bascula-rayos-plugins-seo.jpg" alt="" width="1200" height="805" srcset="https://ayudawp.com/wp-content/uploads/2026/09/analisis-bascula-rayos-plugins-seo.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/analisis-bascula-rayos-plugins-seo-768x515.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/analisis-bascula-rayos-plugins-seo-240x160.jpg 240w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Me toca reconocerlo, qué le vamos a hacer, que los datos son para eso, y aquí no hay maquillaje ni <em>cocina</em>. <strong>En memoria de portada y de entrada individual, The SEO Framework queda por debajo de Visibility.</strong> Slim SEO ocupa algo menos en disco (892 KB frente a 971 KB) y autocarga muchísimo menos (7 bytes frente a 3,3 KB).</p>
<p>Pero vamos, que ya me conoces, ya le estoy <strong>pasando la lija, poniendo a dieta y en nada esas tablas van a cambiar y mucho</strong>. Lo que más me gusta de ponerme a prueba es precisamente eso, que son retos, y <strong>me encanta aprender para mejorar</strong>.</p>
<h2>¿Y con esto qué hago si voy a instalar un plugin de SEO? ¿me fío? ¿sirve de algo?</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160135 size-full" src="https://ayudawp.com/wp-content/uploads/2026/09/escaner-rendimiento-plugins-seo.jpg" alt="" width="1200" height="805" srcset="https://ayudawp.com/wp-content/uploads/2026/09/escaner-rendimiento-plugins-seo.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/escaner-rendimiento-plugins-seo-768x515.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/escaner-rendimiento-plugins-seo-240x160.jpg 240w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Aquí no te voy a decir que instales Visibility porque lo haya desarrollado yo, para eso ya tienes el enlace de descarga un poco más abajo si te apetece probarlo.</p>
<p>Te digo lo de siempre, lo que llevo defendiendo más de 20 años, que <strong>el problema nunca es cuántos plugins metes en tu WordPress, el problema es meter código que no vas a usar</strong>.</p>
<p>Si tu plugin actual te resuelve lo que necesitas y no te está comiendo media instalación no tienes ningún motivo para cambiar. Si en cambio llevas tiempo notando que el editor va a pedales o que tu hosting anda canino de memoria, ya sabes en qué tabla mirar antes de decidir.</p>
<p>Y luego está <em><strong>ese otro debate del que usted me habla</strong></em>, el de que <a href="https://ayudawp.com/sirven-actualmente-plugins-seo/">si sirven de algo actualmente los plugins de SEO</a>, por si te apetece seguir con la juerga.</p>
<h2>Metodología de la comparativa de rendimiento de plugins SEO</h2>
<p>Todo esto sale de un plugin propio que solo se instala para hacer las mediciones, nunca en una web real, y que expone varios pasos protegidos por una clave para que nadie más pueda tocarlo.</p>
<p>Antes de cada tanda genera la entrada de prueba siempre igual (1.169 palabras, extracto escrito a mano, imagen destacada, encabezados, una lista y un bloque de detalles), para que el contenido nunca sea la variable que cambia entre un plugin y otro.</p>
<p>Después cambia el plugin activo, desactiva los otros siete y activa solo el que toca, dejando que sus rutinas de instalación se ejecuten como en cualquier instalación nueva, con sus tablas, sus opciones y su configuración de fábrica. Nada de activaciones silenciosas que se salten esos pasos, porque eso habría falseado buena parte de lo que has leído más arriba.</p>
<p>Es todo un bicho, y actúa prácticamente sin intervención humana (tienes las instrucciones en el zip que te he puesto abajo), más o menos, por resumirte, funciona así:</p>
<ul>
<li>Con el plugin activo pide la portada, la entrada y el editor las veces que corresponda, y en cada carga anota <code>memory_get_peak_usage()</code> para la memoria, <code>get_num_queries()</code> para las consultas y un cronómetro para el tiempo.</li>
<li>Para saber qué código PHP entra a ejecutarse de verdad, compara <code>get_included_files()</code> antes y después de cada petición, así que la cifra de PHP cargado no es lo que el plugin ocupa en el disco, es lo que tu servidor ha tenido que leer para servir esa página en concreto.</li>
<li>Para la huella que deja instalado mira <code>SHOW TABLES</code> para las tablas propias de cada plugin, <code>_get_cron_array()</code> para sus eventos de cron y las opciones autocargadas con su peso en bytes.</li>
<li>Para el peso del editor y de la portada, suma lo que cada plugin encola con <code>wp_scripts()</code> y <code>wp_styles()</code>. Cada petición queda anotada en un registro en bruto, y de ahí sale la mediana que ves en las tablas, no la mejor marca ni una media que un solo pico podría desviar.</li>
</ul>
<h3>Entorno y procedimiento</h3>
<ul>
<li>WordPress 7.0.2, PHP 8.5.3, MySQL 8.4, tema GeneratePress, límite de memoria de 256 MB y sin caché de objetos externa. Instalación local, con WooCommerce activo y cuatro plugins pequeños más, los mismos en los ocho escenarios, para que ningún plugin de SEO compitiera contra una instalación desnuda que no representa una web real. Medido el 29 de julio de 2026.</li>
<li>Portada y entrada individual pedidas 10 veces como visitante anónimo, mediante peticiones que el propio servidor se hace a sí mismo, descartando antes una carga de calentamiento. El editor de bloques, que solo se puede abrir con sesión de administrador, se abrió 4 veces con esa entrada cargada.</li>
</ul>
<p>Dos plugins necesitaron un empujón antes de arrancar, todo hay que decirlo, y es que Rank Math y SEOPress no publican nada hasta completar sus rutinas de instalación, y Rank Math ni siquiera pinta una etiqueta hasta que terminas su asistente. Lo completé aceptando todos los valores que traía por defecto, sin conectar ninguna cuenta ni importar nada de otro plugin.</p>
<h3>El contraste con Query Monitor, y el susto de AIOSEO</h3>
<p>Todo lo anterior está medido sin Query Monitor, porque este plugin, por otra parte encantador, tiene una pega, y es que guarda cada consulta que registra y eso también consume memoria.</p>
<p>Con sesión de administrador y Query Monitor activo los números suben para todos por igual, y la instalación sin ningún plugin de SEO pasa de 10,83 MB y 58 consultas a 13,7 MB y 72. El orden entre plugins no cambia, así que las cifras de las tablas anteriores se tomaron sin él.</p>
<p>Uso Query Monitor aquí a propósito, porque no es mío ni de nadie del sector. Es la herramienta que cualquier desarrollador de WordPress usa para diagnosticar estos mismos números, así que si desconfías del medidor propio, tienes el mismo resultado visto con otro instrumento.</p>
<blockquote><p>Con Query Monitor activo, Visibility genera la página en 0,05 segundos, más rápido que la instalación sin ningún plugin de SEO, que tarda 0,08 s</p></blockquote>
<p>Y el contraste tiene su propio susto, porque en esa misma situación <strong>AIOSEO tarda 0,31 segundos, seis veces más que Visibility y casi cuatro veces más que no tener ningún plugin de SEO instalado</strong>.</p>
<h2>Compruébalo por tu cuenta: datos abiertos ¿se decía así no?</h2>
<p>Todo lo que has leído sale de <strong>216 mediciones</strong> concretas, no de una sensación. Puedes descargar el medidor que las ha tomado, con el registro completo y el CSV agregado de mis pruebas, lo tienes en <a href="https://visibility.quest/assets/bench/ayudawp-bench.zip" target="_blank" rel="nofollow noopener">visibility.quest/assets/bench/ayudawp-bench.zip</a>, para no tener que fiarte de mi palabra ni de la de nadie.</p>
<p>La comparativa completa, con las cuatro tablas y el contraste con Query Monitor, está en <a href="https://visibility.quest/es/comparison.html#performance" target="_blank" rel="noopener">visibility.quest/es/comparison.html</a>.</p>
<p>Si usas alguno de los otros ocho plugins, ya tienes tus números ahí, para bien o para mal. Y si te apetece debatirlo, o contarme cuál usas tú y por qué, me tienes ahí abajo, en la sección de comentarios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/plugin-seo-ligero/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Tienda WooCommerce «Visible» o «Próximamente» ¿se puede cambiar o personalizar eso?</title>
		<link>https://ayudawp.com/woocommerce-proximamente/</link>
					<comments>https://ayudawp.com/woocommerce-proximamente/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 06:28:52 +0000</pubDate>
				<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Principiante]]></category>
		<category><![CDATA[Próximamente]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160093</guid>

					<description><![CDATA[Estás montando una tienda con WooCommerce, quieres que el cliente vaya viendo cómo queda, que tú puedas trastear con las plantillas a plena luz del día.]]></description>
										<content:encoded><![CDATA[<p>Estás <strong>montando una tienda</strong> con WooCommerce, quieres que <strong>el cliente vaya viendo cómo queda</strong>, que tú puedas trastear con las plantillas a plena luz del día.</p>
<p>Pero, eso sí, que mientras tanto el que llegue de Google se encuentre una página de espera decente, y <strong>no una tienda a medias con tres productos de prueba</strong> con <a href="https://ayudawp.com/generador-chiquito-lorem-ipsum/" target="_blank" rel="noopener">textos Lorem Ipsum</a>.</p>
<p>Pues no necesitas ningún plugin para eso, <strong>WooCommerce lo trae de serie desde hace tiempo y casi nadie sabe que está ahí</strong>.</p>
<p>Y lo que menos gente sabe todavía es que <strong>la página de espera que te enseña por defecto puedes cambiarla</strong> entera por la tuya.</p>
<p>Vamos a verlo, que se hace en un par de minutos.</p>
<h2>Dónde cambiar la visibilidad de WooCommerce</h2>
<p>En el escritorio, «<strong>WooCommerce → Ajustes → Visibilidad del sitio</strong>». Es una pestaña más, al lado de las de siempre, y tiene dos opciones:</p>
<ul>
<li><strong>Visible</strong>: la tienda está abierta, lo habitual.</li>
<li><strong>Próximamente</strong>: quien no tenga permisos ve una página de espera.</li>
</ul>
<p>Debajo hay <strong>una casilla para restringirlo solo a las páginas de la tienda</strong>, y un interruptor para <strong>generar un enlace con clave y poder enseñar el sitio</strong> a quien tú quieras, ahora vemos las dos cosas.</p>
<p><a href="https://ayudawp.com/?attachment_id=160157" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160157 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/ajustes-visibilidad-woocommerce-1200x678.jpg" alt="" width="1200" height="678" srcset="https://ayudawp.com/wp-content/uploads/2026/09/ajustes-visibilidad-woocommerce-1200x678.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/ajustes-visibilidad-woocommerce-768x434.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/ajustes-visibilidad-woocommerce-1536x867.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/ajustes-visibilidad-woocommerce.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Por cierto, si acabas de instalar WooCommerce y te está pasando que en la parte visible enseña una página de «próximamente» aunque tu tema esté perfecto, no te vuelvas loco revisando plantillas, <strong>las tiendas nuevas vienen con esto activado por defecto</strong>.</p>
<p>Es esa pantalla, no tu tema, y es de esas cosas que te hacen perder una tarde buscando el fallo donde no está.</p>
<h2>Quién ve la tienda y quién ve el cartel de próximamente</h2>
<p>La regla es simple, <strong>ve la tienda quien tenga la capacidad <code>manage_woocommerce</code></strong>, o sea, administradores y gestores de tienda. Todos los demás ven la página de espera, incluidos tus suscriptores y tus clientes registrados.</p>
<p>Eso es útil para que tú y el cliente entréis con vuestro usuario y veáis la web como va quedando, sin trucos ni URLs raras.</p>
<p>¿Y si quieres enseñársela a alguien que no tiene usuario? Pues para eso está el enlace para compartir de esa misma pantalla.</p>
<p>Genera una URL con una clave al final, del tipo <code>tudominio.com/page_id=8804&amp;woo-share=laclave</code>, y <strong>quien la abra deja de ver la página de espera durante noventa días</strong>, porque WooCommerce le pone una cookie.</p>
<p>Muy práctico para el diseñador, el fotógrafo o tu socio, que no tienen por qué tener cuenta en la tienda.</p>
<p>Si la clave se te va de las manos y acaba circulando por ahí, la cambias en esa misma pantalla y las cookies antiguas dejan de valer.</p>
<h3>Toda la web o solo la tienda</h3>
<p>La casilla de restringir a las páginas de la tienda hace exactamente lo que dice, y la diferencia importa más de lo que parece:</p>
<ul>
<li><strong>Sin marcar</strong>: se tapa el sitio entero, portada incluida. Es lo que quieres cuando estás montando la web desde cero.</li>
<li><strong>Marcada</strong>: el blog, el «quiénes somos» y el resto de páginas siguen visibles, y solo se tapan la tienda, las fichas de producto, el carrito y el pago. Es lo que quieres cuando ya tienes una web viva y le estás añadiendo la parte de tienda, o cuando cierras la venta unos días por vacaciones y no te apetece apagar la web.</li>
</ul>
<h2>Cómo cambiar la pantalla de próximamente de WooCommerce</h2>
<p>Aquí viene lo bueno, porque resulta que la página que enseña WooCommerce por defecto está bien para salir del paso, pero es genérica. ¿Y eso es bueno? … esperaaaa, que ahora viene…</p>
<p>Por dentro, WooCommerce no genera nada inamovible, simplemente <strong>carga la plantilla <code>coming-soon</code> con la función de WordPress <code>get_query_template()</code>,</strong> y eso lo genera tu tema.</p>
<p>Si usas un <strong>tema de bloques</strong> creas el archivo <code>templates/coming-soon.html</code> dentro de la carpeta del tema (o del tema hijo). Con eso ya lo tienes, aparece en «<strong>Apariencia → Editor → Plantillas</strong>» y se edita con bloques, como cualquier otra.</p>
<p>Ahí <strong>puedes poner tu logotipo, tu tipografía, tus colores, la foto de tu local, el mapa, el formulario de avisos, lo que quieras</strong>.</p>
<p>Si usas un <strong>tema clásico</strong> el archivo es <code>coming-soon.php</code> en la raíz del tema, y ahí mandas tú con PHP.</p>
<p>Por cierto, <strong>los archivos <code>.html</code> de las plantillas de un tema de bloques no ejecutan PHP</strong>.</p>
<p>Si tu página de espera necesita PHP (sacar el logotipo de los ajustes, pintar iconos SVG, leer una opción), el contenido va en un patrón, dentro de <code>patterns/</code>, y la plantilla se limita a llamarlo:</p>
<pre>&lt;!-- wp:pattern {"slug":"tutema/proximamente"} /--&gt;</pre>
<p>Los patrones sí son PHP y sí se ejecutan. La plantilla queda en una línea y el contenido se puede editar igual desde el editor.</p>
<h2>Dónde se almacenan los ajustes de visibilidad de la tienda de WooCommerce</h2>
<p>Para quien mire la base de datos o tenga que migrar la tienda de sitio, esto son cuatro opciones en la tabla de opciones:</p>
<ul>
<li><code>woocommerce_coming_soon</code>: <code>yes</code> o <code>no</code>, el interruptor principal.</li>
<li><code>woocommerce_store_pages_only</code>: la casilla de restringir a la tienda.</li>
<li><code>woocommerce_private_link</code>: si el enlace para compartir está activo.</li>
<li><code>woocommerce_share_key</code>: la clave de ese enlace.</li>
</ul>
<p>Te lo cuento sobre todo porque <strong>si migras una tienda y de repente el sitio nuevo aparece cerrado, mira esas opciones antes de ponerte a revisar el tema</strong>.</p>
<h2>Otros ajustes a vigilar con la tienda en estado de próximamente</h2>
<p><strong>No es un 503, es un 200.</strong> La página de espera se sirve como una respuesta normal, con una cabecera de caché corta de un minuto.</p>
<p>Eso está bien pensado para una tienda que va a abrir (no quieres que Google entienda que tu web se ha caído), pero significa que <strong>si dejas la web en «próximamente» meses, Google puede indexar esa página de espera</strong>.</p>
<p>Mientras estés montando la tienda deja también marcado el «Pedir a los motores de búsqueda que no indexen este sitio» de «Ajustes → Lectura», y lo quitas también el día de la apertura.</p>
<p>Y si tienes caché de página en el hosting, tu plugin de optimizaciones, o un CDN por delante, puede darse el caso de que un visitante reciba la versión cacheada de la tienda, o que tú, con tu sesión abierta, sigas viendo la página de espera.</p>
<p>Cada vez que enciendas o apagues esto, vacía la caché y compruébalo en una ventana de incógnito. Es la única forma de ver lo que ve un visitante de verdad.</p>
<p><strong>Los correos y los pedidos siguen funcionando</strong>, porque estos ajustes de visibilidad tapan el escaparate, no apagan la tienda. Así que si tienes pedidos antiguos, suscripciones o tareas programadas, siguen funcionando de fondo. No es un cierre técnico, es una cortina.</p>
<h2>Para qué NO sirven los ajustes de visibilidad de WooCommerce</h2>
<p>Si lo que necesitas no es tapar el escaparate sino <strong>cerrar de verdad</strong> (una migración, restaurar una copia, un cambio de dominio, esas dos horas en las que no quieres que nadie compre ni te mande un formulario), esto no es lo tuyo, porque la web sigue funcionando entera por detrás.</p>
<p>Para eso está el archivo <code>.maintenance</code> de WordPress, que corta la ejecución antes de cargar nada y devuelve un <code>503</code> honesto. Lo tengo contado con las mejoras que le faltan al método clásico en <a href="https://ayudawp.com/activar-modo-mantenimiento-en-wordpress-con-archivo-maintenance-sin-plugins/">este otro artículo</a>.</p>
<h2>Para recordar…</h2>
<ol>
<li>WooCommerce → Ajustes → Visibilidad del sitio, marcas «Próximamente» y guardas.</li>
<li>Decides si tapas el sitio entero o solo la tienda con la casilla de debajo.</li>
<li>Si alguien de fuera tiene que verlo, activas el enlace para compartir y le pasas esa URL.</li>
<li>Creas <code>templates/coming-soon.html</code> en tu tema (o <code>coming-soon.php</code> si es clásico) y montas la página de espera que quieras.</li>
<li>Marcas «Pedir a los motores de búsqueda que no indexen este sitio» en Ajustes → Lectura mientras dure la tarea.</li>
<li>Vacía cachés y lo miras en incógnito.</li>
</ol>
<p>El día que abras, deshaces los pasos 1 y 5 en ese orden, compruebas que la tienda responde y a correr.</p>
<p>Si lo has montado de otra forma, o has hecho algo curioso con la plantilla <code>coming-soon</code> de tu tema, cuéntamelo en los comentarios, que estas páginas de espera dan mucho juego y casi siempre se despachan con un logotipo centrado y poco más.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/woocommerce-proximamente/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿SÍ Gutenberg?</title>
		<link>https://ayudawp.com/si-gutenberg/</link>
					<comments>https://ayudawp.com/si-gutenberg/#comments</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 06:28:41 +0000</pubDate>
				<category><![CDATA[Plugins WordPress]]></category>
		<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[Bloques]]></category>
		<category><![CDATA[Gutenberg]]></category>
		<category><![CDATA[Principiante]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160089</guid>

					<description><![CDATA[¿Quieres poder elegir entre el editor clásico de WordPress o el de bloques Gutenberg? Te lo pongo fácil…]]></description>
										<content:encoded><![CDATA[<p>Seguramente conoces ya <strong>mi plugin No Gutenberg</strong>, que lleva en el repositorio de WordPress.org desde 2018, y que durante casi todo ese tiempo ha hecho una sola cosa: <strong>hacer desaparecer el editor de bloques</strong>, sin ajustes, sin preguntas, sin miramientos. Tiene miles de instalaciones activas que confían ahora mismo en ese comportamiento mientras escribo esto.</p>
<p>Pues bien, he publicado <strong>una actualización que cambia ese comportamiento</strong> por completo, incluso la filosofía. Y voy a ser sincero contigo, <strong>el cambio no es solo del plugin, es mío</strong>.</p>
<h2>Qué (me) ha cambiado, con fechas y todo</h2>
<p>El plugin, desde la versión 2.2.0, añade una pantalla de ajustes completa en «<strong>Ajustes &gt; No Gutenberg</strong>», con un interruptor maestro para quien quiera el comportamiento de siempre.</p>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160146 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/desactivar-gutenberg-bloques-no-gutenberg-1200x445.jpg" alt="" width="1200" height="445" srcset="https://ayudawp.com/wp-content/uploads/2026/09/desactivar-gutenberg-bloques-no-gutenberg-1200x445.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/desactivar-gutenberg-bloques-no-gutenberg-768x285.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/desactivar-gutenberg-bloques-no-gutenberg-1536x569.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/desactivar-gutenberg-bloques-no-gutenberg.jpg 1668w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Pero hay novedades, porque si desactivas el interruptor principal, debajo asoman reglas independientes por tipo de contenido, por perfil de usuario, por plantilla de página y por entradas concretas.</p>
<p><a href="https://ayudawp.com/?attachment_id=160148" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160148 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-por-tipo-de-contenido-perfiles-plantillas-1200x1088.jpg" alt="" width="1200" height="1088" srcset="https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-por-tipo-de-contenido-perfiles-plantillas-1200x1088.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-por-tipo-de-contenido-perfiles-plantillas-768x696.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-por-tipo-de-contenido-perfiles-plantillas-1536x1392.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-por-tipo-de-contenido-perfiles-plantillas.jpg 1690w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>También añade el cambio de editor entrada por entrada, un panel de estado que resume qué está pasando de verdad en tu sitio, y tres constantes de wp-config para fijar toda la configuración por código, algo que ya te conté con detalle en <a href="https://ayudawp.com/editor-clasico-en-multisitio/" target="_blank" rel="noopener ugc">la guía del editor clásico en multisitio</a> que publico junto a este artículo.</p>
<p><a href="https://ayudawp.com/?attachment_id=160147" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160147 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-ajustes-todo-el-sitio-y-widgets-1200x719.jpg" alt="" width="1200" height="719" srcset="https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-ajustes-todo-el-sitio-y-widgets-1200x719.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-ajustes-todo-el-sitio-y-widgets-768x460.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-ajustes-todo-el-sitio-y-widgets-1536x920.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/No-gutenberg-ajustes-todo-el-sitio-y-widgets.jpg 1730w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Ahí también hay algo más pequeño pero, para mí, más importante: <strong>protección automática del contenido que ya está construido con bloques</strong>. Una entrada que ya tiene bloques conserva el editor de bloques pase lo que pase con tus reglas, salvo que marques explícitamente lo contrario.</p>
<p>De paso, la lista de entradas del escritorio ahora indica qué editor usa cada una, con un enlace para ver solo las que ya están construidas con bloques. Ah, también te permite (re)activar los widgets clásicos, por si te quieres ahorrar otro plugin, y tal.</p>
<p><a href="https://ayudawp.com/?attachment_id=160149" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160149 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/No-Gutenberg-aviso-contenido-con-bloques-1200x398.jpg" alt="" width="1200" height="398" srcset="https://ayudawp.com/wp-content/uploads/2026/09/No-Gutenberg-aviso-contenido-con-bloques-1200x398.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/No-Gutenberg-aviso-contenido-con-bloques-768x255.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/No-Gutenberg-aviso-contenido-con-bloques-1536x510.jpg 1536w, https://ayudawp.com/wp-content/uploads/2026/09/No-Gutenberg-aviso-contenido-con-bloques.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Y si te preguntas si esto te va a romper algo al actualizar, la respuesta es que no, los ajustes por defecto reproducen el comportamiento de siempre, así que ninguna instalación existente cambia de comportamiento sin que tú lo decidas.</p>
<h2>Lo que de verdad me hizo cambiar de idea</h2>
<p>Aquí viene la parte que no sale en el registro. Si activabas No Gutenberg antes de la 2.3.0 en un sitio que ya tenía entradas montadas con bloques, <strong>esas entradas se mandaban igualmente, a la brava, al editor clásico</strong>.</p>
<p>Con el puñetero código de los bloques a la vista, sin maquetación, hecho un desastre. <strong>El plugin no distinguía</strong> entre «esta entrada nunca ha visto un bloque» y «esta entrada es un bloque detrás de otro con cuidado», y las trataba igual.</p>
<p>Ahí es donde caí en la cuenta de que <strong>llevaba años resolviendo mi propio problema y dando por hecho que era también el tuyo</strong>.</p>
<p>Mi problema era que no quería ver el editor de bloques. El tuyo, si tenías contenido ya creado con blouqes, era no perder ese trabajo por instalar mi plugin.</p>
<p>Son dos problemas distintos, y durante ocho años los traté como si fueran el mismo, total nada, desde 2018.</p>
<h2>Mi queja nunca fue Gutenberg o los bloques, era no poder elegir</h2>
<p>Y aquí toca hacer autocrítica, más o menos.</p>
<p>Llevo años criticando el editor de bloques con dureza, y sigo pensando que buena parte de esa crítica está justificada. Pero en realidad, si me conoces ya sabrás que <strong>mi queja de fondo nunca fue que el editor de bloques existiera, sino que no había forma sencilla de decidir dónde sí y dónde no</strong>.</p>
<p>Te lo digo yo, que también llevo defendiendo años el <strong>uso el editor de bloques como maquetador siempre que puedo</strong>, a pesar de que todavía le faltan cosas para estar a la altura de un Divi o un Elementor.</p>
<p>Y lo uso a propósito, no a pesar de mi postura sobre Gutenberg, sino precisamente por ella. Es la pieza más cercana que tiene WordPress hoy a ese maquetador nativo que llevo años pidiendo, para no depender de un plugin de terceros solo para maquetar una portada o una landing.</p>
<p><strong>Lo que nunca he defendido es que ese mismo maquetador sea la herramienta obligatoria</strong> para escribir una entrada de blog. Ahí no hace falta maquetar nada, hace falta escribir, y son dos trabajos distintos que llevan mal metidos en la misma pantalla desde 2018.</p>
<p>No Gutenberg, durante un montón de años ha resuelto eso a su manera, cerrando la cocina entera del restaurante porque había un plato del menú que no me convencía. Lo lógico siempre fue quitar ese plato, no echar el cierre a todo el local.</p>
<p>También aplica exactamente esta misma lógica a WooCommerce, que hasta ahora era otro interruptor de todo o nada dentro del propio plugin.</p>
<h2>Páginas y sitio sí, entradas no, o mejor dicho, que cada cual elija</h2>
<p>Esta distinción no es solo una manía mía. Está en la propia arquitectura de WordPress. Las plantillas de un tema de bloques, las que usa el editor del sitio para maquetar toda la web, ni siquiera pasan por la pantalla clásica de editar entradas, tienen su propia aplicación, separada, pensada de raíz para maquetar.</p>
<p>WordPress ya sabe que <strong>maquetar un sitio y escribir una entrada son tareas distintas</strong>. Lo que nunca ha ofrecido es una forma cómoda de aplicar ese criterio también a las entradas y páginas normales sin tocar código.</p>
<p>Eso es exactamente lo que hace ahora No Gutenberg: bloques para páginas y para el sitio, si quieres, y editor clásico para entradas, si es lo que prefieres, sin que sea una decisión de todo o nada para todo el contenido a la vez.</p>
<h2>Por qué esto es importante sobre todo a agencias y redacciones</h2>
<p>Si trabajas solo esta discusión es casi filosófica, activas lo que te apetezca y ya está, pero si gestionas una web con varios redactores, o llevas clientes desde una agencia, la falta de elección deja de ser una molestia personal y se convierte en un problema real de flujo de trabajo.</p>
<p>Un redactor que solo quiere escribir y publicar no necesita ver patrones, columnas ni estilos globales, necesita un cuadro de texto que no se interponga.</p>
<p>Y un diseñador o un administrador maquetando la home sí necesita todo eso. Antes tenías que elegir un único comportamiento para todo el mundo y todo el contenido.</p>
<p>Ahora puedes decir si <strong>editor clásico para el perfil de redactor, bloques disponibles para administrador y editor, y bloques siempre en páginas</strong>, con las reglas por perfil y por tipo de contenido.</p>
<p>Es la <strong>diferencia entre imponer una preferencia y ofrecer una herramienta</strong>.</p>
<h2>Qué no cambia si ya usas el plugin</h2>
<p>Si ya tenías No Gutenberg activo actualizar no te va a cambiar nada lo que ya tenías. El interruptor maestro sigue ahí, y <strong>con la configuración por defecto el plugin se comporta exactamente igual que antes de la 2.2.0</strong>.</p>
<p>Lo único nuevo es que, <strong>si quieres, ahora puedes afinar</strong>. No hay letra pequeña ni cambio de comportamiento silencioso, y si algo he defendido siempre es que las novedades se cuenten así de claras, sin meterte prisa ni miedo para que actualices.</p>
<h2>Para quién es este cambio, y para quién no</h2>
<p>Si administras un solo sitio para ti, para tu propio uso, y tienes clarísimo que no quieres ver un bloque en tu vida, el interruptor maestro sigue a un clic de distancia, exactamente igual que en la versión anterior (no, no te va a caer ninguna notificación insistiendo para que cambies nada). <strong>Este cambio no te obliga a nada</strong>.</p>
<p>Es para quien administra contenido de otros, para clientes, redactores, equipos completos, y necesitaba desde hace tiempo algo más fino que un único interruptor para todo el sitio.</p>
<p>Si esa eres tú, la pantalla de ajustes nueva es motivo suficiente para actualizar hoy mismo.</p>
<h2>Y ahora, la parte que te toca a ti</h2>
<p>Si administras un solo sitio y quieres perfilar quién ve qué editor, la nueva pantalla de ajustes de <a href="https://wordpress.org/plugins/no-gutenberg/" target="_blank" rel="nofollow noopener">No Gutenberg?</a> es el sitio por el que empezar. Si administras una red completa, tienes <a href="https://ayudawp.com/editor-clasico-en-multisitio/" target="_blank" rel="noopener ugc">un tutorial de cómo usar el editor clásico en multisitio</a> con las tres formas que funcionan de verdad, plugin, código y constantes de wp-config incluidas.</p>
<p>Y si después de leer esto sigues pensando que lo mío es una excusa para no reconocer que el editor de bloques está bien como está, para todo y para todos, no estamos de acuerdo, y ahora ya sabes por qué. Pero vamos, que lo debatimos por ahí abajo, en los comentarios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/si-gutenberg/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>¿Te llegó un email diciendo que tu web WordPress tiene una vulnerabilidad grave? ¿es un Beg Bounty bueno o un timo?</title>
		<link>https://ayudawp.com/beg-bounty/</link>
					<comments>https://ayudawp.com/beg-bounty/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Tellado]]></dc:creator>
		<pubDate>Mon, 07 Sep 2026 06:28:54 +0000</pubDate>
				<category><![CDATA[Seguridad WordPress]]></category>
		<category><![CDATA[Tutoriales - Trucos]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[WordPress.org]]></category>
		<category><![CDATA[beg bounty]]></category>
		<category><![CDATA[bug bounty]]></category>
		<category><![CDATA[Cloudflare]]></category>
		<category><![CDATA[CSP]]></category>
		<category><![CDATA[DMARC]]></category>
		<category><![CDATA[Heartbleed]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[Logjam]]></category>
		<category><![CDATA[SPF]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[TLS]]></category>
		<guid isPermaLink="false">https://ayudawp.com/?p=160039</guid>

					<description><![CDATA[Si te ha llegado un email diciendo que tu web WordPress tiene una vulnerabilidad grave, la respuesta corta es que puede ser cierto y un timo al mismo tiempo.]]></description>
										<content:encoded><![CDATA[<p>Si te ha llegado un <strong>email diciendo que tu web WordPress tiene una vulnerabilidad grave</strong>, la respuesta corta es que <strong>puede ser cierto y un timo al mismo tiempo</strong>.</p>
<p>A mí me llegó hace unos días, haciendo referencia a <a href="https://mantenimiento.ayudawp.com/">mantenimiento.ayudawp.com</a>, y mi primera reacción fue la típica, pensar que era <strong>publicidad de servicios de seguridad disfrazada de aviso técnico</strong>.</p>
<p>Y el caso es que no vendía nada, y venía de un Gmail corriente, sin firma de empresa ni nada que oliera a comercial.</p>
<p>Llevo como 20 años metido en seguridad de WordPress, y aun así el correo me hizo dudar un segundo.</p>
<p>Vamos a ver qué me encontré, porque la cosa tiene su miga, y es que el aviso tenía razón en lo técnico y aun así era una encerrona.</p>
<h2>Esto es lo que decía el correo</h2>
<p>El asunto decía, tal cual, «<strong>Security Advisory: Deprecated TLS Protocol &amp; Weak Ciphers Enabled on …</strong>». Si te ha llegado uno con ese mismo patrón, con tu dominio en vez del mío, es la misma plantilla.</p>
<p>Va dirigido a un altisonante «<strong>Security Team</strong>», lo firma un no menos rimbombante «<strong>Security Research Team</strong>» (que suena a mucho y no tiene porqué ser nada), y apunta directo a <code>mantenimiento.ayudawp.com:443</code>. Esto es, resumido y sin la parafernalia de separadores que traía de verdad, lo que contaba:</p>
<blockquote><p>Finding: <code>weak-cipher-suites:tls-1.0</code>, severidad <em>low</em> según su propia herramienta.</p>
<p>Impacto según ellos: ataques de hombre en el medio con caída de protocolo (citaban POODLE y BEAST), robo de cookies de sesión por los cifrados CBC, e incumplimiento de PCI-DSS 3.2.1.<br>
Cómo comprobarlo: <code>openssl s_client -connect mantenimiento.ayudawp.com:443 -tls1</code><br>
Solución que proponían: bloques de configuración para Nginx y Apache forzando TLS 1.2 y 1.3.<br>
Firmado, cómo no, «Security Research Team».</p></blockquote>
<p>Ni una empresa detrás, ni un nombre, ni una vía de contacto que no fuera ese mismo Gmail.</p>
<p><a href="https://ayudawp.com/?attachment_id=160140" rel="nofollow"><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160140 size-medium" src="https://ayudawp.com/wp-content/uploads/2026/09/security-advvisory-email-1200x1439.jpg" alt="" width="1200" height="1439" srcset="https://ayudawp.com/wp-content/uploads/2026/09/security-advvisory-email-1200x1439.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/security-advvisory-email-768x921.jpg 768w, https://ayudawp.com/wp-content/uploads/2026/09/security-advvisory-email-1281x1536.jpg 1281w, https://ayudawp.com/wp-content/uploads/2026/09/security-advvisory-email-1707x2048.jpg 1707w, https://ayudawp.com/wp-content/uploads/2026/09/security-advvisory-email.jpg 1920w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></a></p>
<p>Con esto ya tenía motivos de sobra para desconfiar, pero antes de mandarlo a la papelera quise comprobar si lo técnico se sostenía.</p>
<h2>Cómo comprobarlo sin fiarte de nadie</h2>
<p>Lo primero que hice fue lo que proponía el propio email, lanzar el comando que te copio arriba, y me dio un error de <code>No protocols available</code>, como si el servidor hubiera colgado la llamada.</p>
<p>Aquí viene la primera trampa, y le puede pasar a cualquiera que use OpenSSL 3, que es la versión que trae cualquier Linux o Mac reciente.</p>
<p>Por defecto OpenSSL bloquea TLS 1.0 antes de intentar siquiera la conexión. Ese error solo dice que tu OpenSSL ha decidido no probarlo, y no aporta ningún dato real sobre el servidor.</p>
<p>Para forzar la prueba real hay que añadir <code>-cipher 'ALL:@SECLEVEL=0'</code>, que baja el nivel de seguridad exigido por la librería, solo entonces la respuesta viene de verdad del otro lado.</p>
<p>Y hay una segunda trampa, más traicionera todavía si le pides el favor a una IA. Muchos entornos con salida a internet, ya sea un proxy corporativo o el <em>sandbox</em> de un asistente, interceptan el TLS y sirven su propio certificado en vez del tuyo, si la comprobación te sale limpia a la primera, <strong>desconfía</strong>, porque puede que estés midiendo ese proxy y no tu web de verdad.</p>
<p>La forma fiable de comprobarlo sin estos líos es un escáner externo, y el de referencia es el de Qualys, <a href="https://www.ssllabs.com/ssltest/" target="_blank" rel="nofollow noopener">SSL Labs</a>. Y ahí el resultado fue claro, nota <strong>B</strong>, con TLS 1.0 y 1.1 activos de la mano de 1.2 y 1.3, y el cifrado exacto que citaba el correo, <code>TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, en eso no mentían.</p>
<h2>Lo real y lo inflado</h2>
<p>El remitente, por muy oportunista que sea, en lo técnico del correo todo era cierto. Tu web puede tener TLS 1.0 abierto ahora mismo y tú sin enterarte, así que no lo despaches solo por venir de un Gmail sin firma. Pero el resto del correo estaba inflado a base de bien.</p>
<p><strong>No hay riesgo real de POODLE</strong> (el ataque de 2014 que explota los cifrados en bloque antiguos), ni en su variante clásica ni en la variante para TLS, porque el escáner lo marca expresamente como no vulnerable en ambos casos.</p>
<p>Tampoco hay <em>downgrade</em> posible, porque el servidor tenía activo <code>TLS_FALLBACK_SCSV</code>, que es justo el mecanismo pensado para impedir que un atacante fuerce la caída a un protocolo antiguo. <strong>El correo describía un ataque que su propio hallazgo desmentía</strong>.</p>
<p><strong>BEAST sale marcado, sí, pero es un ataque de 2011 contra el navegador, no contra el servidor</strong>, y todos los navegadores actuales lo mitigan desde hace más de una década. Ningún visitante con Chrome, Firefox, Safari o Edge de este siglo lo va a sufrir.</p>
<p>Y la referencia a PCI-DSS 3.2.1 es, directamente, una plantilla vieja. esa versión se retiró el 31 de marzo de 2024, y el estándar vigente desde entonces es la <a href="https://blog.pcisecuritystandards.org/now-is-the-time-for-organizations-to-adopt-the-future-dated-requirements-of-pci-dss-v4-x" target="_blank" rel="nofollow noopener">4.0.1</a>.</p>
<p>Nada de RC4, nada de <a href="https://ayudawp.com/heartbleed/" target="_blank" rel="noopener"><strong>Heartbleed</strong></a>, nada de <strong>Logjam</strong>, y <strong>forward secrecy</strong> completa. El único motivo real de la nota B era tener TLS 1.0 y 1.1 abiertos, y punto.</p>
<h2>Qué es un Beg Bounty (y por qué WordPress es el blanco favorito)</h2>
<p><img loading="lazy" decoding="async" class="sombra alignnone wp-image-160141 size-full" src="https://ayudawp.com/wp-content/uploads/2026/09/beg-bounty.jpg" alt="" width="1200" height="900" srcset="https://ayudawp.com/wp-content/uploads/2026/09/beg-bounty.jpg 1200w, https://ayudawp.com/wp-content/uploads/2026/09/beg-bounty-768x576.jpg 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px"></p>
<p>Esto tiene nombre y lleva ya varios años documentado en el sector, pues es un fenómeno que le pasa hasta a las webs más pequeñas. Se llama <strong><em>Beg Bounty</em></strong>, algo así como <strong><em>pedir recompensa</em></strong>.</p>
<p>El término lo acuñaron Michael Argast y Chester Wisniewski, de Sophos, después de toparse con un aluvión de correos parecidos.</p>
<p>Quien más lo popularizó fue <a href="https://www.troyhunt.com/beg-bounties/" target="_blank" rel="nofollow noopener">Troy Hunt</a>, el creador de Have I Been Pwned, que describe el método como seleccionar tu dominio, pasarlo por herramientas gratuitas de apuntar y disparar como SSL Labs, dmarcian o Security Headers, y pegar lo que sueltan en <strong>una plantilla de aviso «grave»</strong>.</p>
<p>Todo hay que decirlo, el término se puede usar en sentido peyorativo, como te acabo de comentar, o como estrategia buscada, pues <strong>hay empresas que incluso promueven esto del Be</strong><strong>g Bounty, pero al estilo de recompensas a hackers éticos por informar (responsablemente y sin alarmismo) de problemas de seguridad reales</strong>, y en realidad se le llama <strong>Bug Bounty</strong>, casi lo mismo.</p>
<p>¿Y por qué le toca precisamente a WordPress? Pues porque es uno de los CMS más escaneados del planeta, gracias a su cuota de mercado.</p>
<p>Cualquier bot que rastree direcciones IP se topa antes o después con un <code>wp-login.php</code> o un <code>wp-json</code>, y eso ya delata el CMS y activa el aviso automático.</p>
<p>Y aquí llega el detalle que más rabia me dio, todo hay que decirlo, y es que las IP que contestaban en el escaneo eran de Cloudflare.</p>
<p>El TLS se corta en su servicio, no en mi hosting, que es tanto como decir que quien te abre el portal del edificio no es quien vive en el piso, así que los bloques de configuración para Nginx y Apache que me mandaban de regalo no servían para nada, porque ahí no hay ningún puñetero Nginx mío que tocar.</p>
<p>Y hay una ironía todavía mayor, y es que <a href="https://developers.cloudflare.com/ssl/reference/protocols/" target="_blank" rel="nofollow noopener">Cloudflare fija TLS 1.0 como mínimo por defecto</a> para todos sus clientes con cifrado por certificado. Este descubrimiento, sin saberlo, lo cumplen millones de webs que usan Cloudflare y nunca han tocado ese ajuste.</p>
<h2>Lo que te van a encontrar sí o sí</h2>
<p>Si mantienes webs WordPress esto te va a sonar, es casi siempre el mismo puñado de hallazgos, y vale una misma plantilla:</p>
<table>
<thead>
<tr>
<th>Qué te van a reportar</th>
<th>¿Puede ser verdad?</th>
<th>¿Debería quitarte el sueño?</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>wp-json/wp/v2/users</code> lista tus usuarios</td>
<td>Casi siempre</td>
<td>Poco por sí solo, aunque facilita la fuerza bruta si además usas contraseñas flojas</td>
</tr>
<tr>
<td><code>xmlrpc.php</code> accesible</td>
<td>Sí, viene así por defecto</td>
<td>Depende de si lo usas de verdad (Jetpack, apps móviles). Si no, bloquéalo y listo</td>
</tr>
<tr>
<td><code>?author=1</code> revela el usuario del admin</td>
<td>Sí</td>
<td>Lo mismo que el anterior, es la puerta trasera al mismo dato</td>
</tr>
<tr>
<td>Versión de WordPress visible en el código</td>
<td>Sí</td>
<td>Poco, es informativo y no un ataque en sí mismo</td>
</tr>
<tr>
<td><code>readme.html</code> accesible</td>
<td>Sí</td>
<td>Poco, es la misma información con otro nombre</td>
</tr>
<tr>
<td>Faltan cabeceras de seguridad (CSP, X-Frame-Options)</td>
<td>Casi siempre</td>
<td>Real pero menor, ayuda a mitigar otros ataques y no es una vulnerabilidad por sí sola</td>
</tr>
<tr>
<td>SPF o DMARC flojos</td>
<td>Muy a menudo</td>
<td>El más serio de la lista, de largo</td>
</tr>
</tbody>
</table>
<p>Fíjate en la última fila, un DMARC flojo (el registro que evita que cualquiera pueda enviar correos fingiendo ser tu dominio) sí permite que alguien mande phishing haciéndose pasar por ti, con tu reputación de por medio.</p>
<p>Todo lo demás de la tabla es <strong>ruido de fondo que cualquier escáner automático encuentra en la inmensa mayoría de las webs con WordPress, tengan la seguridad que tengan</strong>.</p>
<p>Y si quieres una <strong>prueba de que ni el propio proyecto WordPress se toma en serio media lista</strong>, tienes el <a href="https://hackerone.com/wordpress" target="_blank" rel="nofollow noopener">programa de recompensas de WordPress en HackerOne</a>.</p>
<p>Descarta de entrada cualquier fallo con una puntuación CVSS (la escala que mide la gravedad de una vulnerabilidad, de 0 a 10) por debajo de 4, y rechaza de forma explícita los avisos sobre disponibilidad de XML-RPC que no vengan acompañados de una prueba de impacto real.</p>
<h2>Cómo distinguir un aviso real de un intento de sablazo</h2>
<p>La mayoría de estos correos son escaneos que alguien pega tal cual en una plantilla, sin más ánimo que cobrarte por algo que podrías haber mirado tú mismo con las mismas herramientas gratuitas. La mala fe empieza cuando de por medio hay presión de pago sin pruebas, o urgencia prefabricada.</p>
<p>Señales de que <strong>el aviso va en serio</strong>:</p>
<ul>
<li>Viene de una empresa identificable, no de un correo personal random.</li>
<li>Incluye una prueba que demuestra impacto real, no solo la salida en bruto de una herramienta.</li>
<li>No pide dinero por adelantado ni condiciona los detalles a que pagues antes.</li>
<li>Ofrece coordinar la publicación con calma, sin plazos inventados.</li>
</ul>
<p>Señales de que <strong>van a por tu cartera</strong>:</p>
<ul>
<li>Gmail u Outlook personal, sin dominio propio ni nombre real detrás.</li>
<li>Saludo genérico tipo «Dear Security Team», firmado por un remitente igual de genérico.</li>
<li>El hallazgo es justo el que su propia herramienta etiqueta como <code>low</code>, mientras el texto habla de robo de sesiones y normativas incumplidas.</li>
<li>Meten prisa con plazos de 24 o 48 horas, o piden pasar por caja antes de contarte nada más.</li>
</ul>
<p>El mío pecaba en tres de las cuatro señales malas, y no tenía ni una de las buenas.</p>
<h2>¿Tienes que hacer algo ya mismo?</h2>
<p>Aunque el correo sea un sablazo disfrazado, el ajuste de fondo conviene hacerlo, y si usas Cloudflare te lleva literalmente medio minuto:</p>
<ol>
<li>Entra en el panel de Cloudflare, en tu dominio.</li>
<li>Ve a <code>SSL/TLS → Edge Certificates → Minimum TLS Version</code>.</li>
<li>Súbelo a <strong>TLS 1.2</strong>. La propia documentación de Cloudflare desaconseja ir más allá, porque a partir de ahí empiezan los problemas con rastreadores y navegadores viejos.</li>
</ol>
<p>Además conviene activar el <strong>HSTS</strong> en ese mismo panel, que obliga al navegador a usar siempre HTTPS y protege contra un ataque bastante más real que el <strong>BEAST</strong> que te van a citar, el <strong>SSL stripping</strong>.</p>
<p>Y <strong>si lo que te llega es más extorsión que aviso, la respuesta correcta es ninguna respuesta</strong>. Contestar solo confirma que la dirección está viva, y lo normal es que el segundo correo ya venga con la tarifa por delante.</p>
<h2>Que esto lo vigile un plugin, no un Gmail cualquiera</h2>
<p>Todo lo que hemos repasado (TLS al día, HSTS activo, cabeceras de seguridad, certificado sin caducar) se puede vigilar antes de que a nadie se le ocurra escanearte y venderte el hallazgo por correo.</p>
<p>Para eso tienes gratis <a href="https://vigilante.works/es/" target="_blank" rel="noopener"><strong>Vigilante</strong></a>, ¿te suena?, es un maravilloso plugin de seguridad para WordPress, que te deja activar HTTPS y HSTS desde el propio panel de administración, y trae un análisis que <strong>avisa si el certificado está a punto de caducar o si faltan cabeceras de seguridad</strong> importantes.</p>
<p>No es la única forma de hacerlo, hay otros plugins de seguridad que cubren parte de esto. Pero si prefieres tenerlo controlado desde dentro de WordPress, en vez de depender de acordarte de entrar en el panel de Cloudflare de vez en cuando, <strong>ahí tienes una forma de que te avise tu propia web antes que un desconocido</strong>.</p>
<p>La decisión de qué hacer con el próximo correo de este tipo que te llegue es tuya. Si mantienes webs de clientes, guárdate esta tabla, porque te va a servir más de una vez.</p>
<p>Para todo lo demás, incluida tu propia colección de correos de este estilo, me tienes ahí abajo, en la sección de comentarios.</p>
<p>Ojalá al próximo «Security Research Team» que te escriba se le note el chasco.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ayudawp.com/beg-bounty/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>