
Desde WordPress 5.5, si no tienes un plugin de SEO que lo reemplace, tu sitio tiene un mapa del sitio en tudominio.cl/wp-sitemap.xml. Es simple y funciona bien, pero incluye todo lo público:
- Todas las entradas y páginas (incluidas «Carrito», «Mi cuenta», «Política de cookies»).
- Todas las categorías y etiquetas.
- Los tipos de contenido públicos de tus plugins.
- Los usuarios con entradas publicadas.
Un buen mapa del sitio debería listar solo lo que quieres que Google indexe. Lo demás, sobra.
Si usas un plugin de SEO (Yoast, Rank Math, SEOPress, AIOSEO, The SEO Framework…), este reemplaza el mapa nativo y todo se configura en sus ajustes. Esta guía es para sitios sin plugin de SEO.
Quitar tipos completos
Todo el código va en un mu-plugin: wp-content/mu-plugins/cwp-sitemap.php.
<?php
/**
* Plugin Name: Mapa del sitio a medida (Curso WordPress)
*/
// 1. Sin usuarios.
add_filter( 'wp_sitemaps_add_provider', function ( $proveedor, $nombre ) {
return 'users' === $nombre ? false : $proveedor;
}, 10, 2 );
// 2. Sin etiquetas (ni otras taxonomías que no quieras).
add_filter( 'wp_sitemaps_taxonomies', function ( $taxonomias ) {
unset( $taxonomias['post_tag'] );
unset( $taxonomias['product_tag'] );
return $taxonomias;
} );
// 3. Sin tipos de contenido que no deben indexarse.
add_filter( 'wp_sitemaps_post_types', function ( $tipos ) {
unset( $tipos['e-landing-page'] ); // Ejemplo: tipo de un constructor.
return $tipos;
} );
Para ver los nombres internos de tus tipos de contenido y taxonomías:
wp post-type list --public=1 --fields=name,label
wp taxonomy list --public=1 --fields=name,label
Excluir páginas concretas
Las páginas de WooCommerce (carrito, finalizar compra, mi cuenta) y las legales no aportan nada en el mapa del sitio. Agrega al mismo mu-plugin:
// 4. Excluir entradas y páginas concretas.
add_filter( 'wp_sitemaps_posts_query_args', function ( $args, $tipo ) {
$excluir = array();
if ( function_exists( 'wc_get_page_id' ) ) {
$excluir[] = wc_get_page_id( 'cart' );
$excluir[] = wc_get_page_id( 'checkout' );
$excluir[] = wc_get_page_id( 'myaccount' );
}
// Entradas y páginas marcadas con el campo personalizado "cwp_fuera_sitemap".
$marcadas = get_posts( array(
'post_type' => $tipo,
'meta_key' => 'cwp_fuera_sitemap',
'fields' => 'ids',
'posts_per_page' => 500,
'no_found_rows' => true,
) );
$args['post__not_in'] = array_merge( $args['post__not_in'] ?? array(), $excluir, $marcadas );
return $args;
}, 10, 2 );
// 5. Excluir categorías vacías o concretas.
add_filter( 'wp_sitemaps_taxonomies_query_args', function ( $args, $taxonomia ) {
if ( 'category' === $taxonomia ) {
$args['exclude'] = array( get_option( 'default_category' ) ); // "Sin categoría".
}
return $args;
}, 10, 2 );
Marcar una entrada para excluirla
Para excluir una entrada o página puntual, agrégale un campo personalizado llamado cwp_fuera_sitemap con cualquier valor (por ejemplo, 1). En el editor de bloques, los campos personalizados se activan en Preferencias → General → Campos personalizados. O con WP-CLI:
wp post meta add 123 cwp_fuera_sitemap 1
Excluir una página del mapa del sitio no impide que Google la indexe si la encuentra por un enlace. Si no quieres que aparezca en los resultados, además márcala con noindex. Y al revés: no dejes en el mapa páginas que tienen noindex, porque son señales contradictorias.
Comprueba el resultado
Abre tudominio.cl/wp-sitemap.xml y navega por cada sección. Si usas caché de página, vacíala antes. Luego, en Search Console → Sitemaps, envía de nuevo wp-sitemap.xml.
¿Tu mapa del sitio tiene secciones que no reconoces? Comparte en el foro los nombres que aparecen y te decimos de qué plugin vienen.





