Como crear un sitemap.xml para WordPress sin plugins

Código para un Mapa del sitio del blog, para enviar a Google y otros buscadores, que se genera y actualiza automáticamente con cada publicación.

Todos los blogs y sitios web de internet requieren de un archivo sitemap.xml, en el que se listan todas las paginas, que se necesitan indexar por Google y otros buscadores.
WordPress no crea este tipo de archivo.
Generalmente lo crean manualmente algunos usuarios, pero la gran mayoría instalando plugins.
No obstante la tarea de generarlo y actualizarlo, es bastante sencilla usando un script que se puede agregar al archivo de configuración del sitio.
Para los que desean en lo posible prescindir de los plugins, en este artículo explico cómo crear el generador de sitemap, que uso en este blog.


Código para generar el sitemap.xml

El sitemap.xml es un archivo de texto plano en formato XML, en el que se listan las páginas de un sitio, con datos como la ruta de cada una, su fecha de publicación y de actualización.
El generador que comparto escribe un nuevo sitemap en la carpeta raíz del sitio, cada vez que se crea una nueva publicación ya sea una entrada o una pagina
Para crearlo agrega el siguiente código al archivo function.php situado en la carpeta Child del tema activo.
Si aún no la has creado, lee como hacerlo en otra publicación.

 add_action( 'publish_post', 'itsg_create_sitemap' );
add_action( 'publish_page', 'itsg_create_sitemap' );
function itsg_create_sitemap() {
    $postsForSitemap = get_posts(array(
        'numberposts' => -1,
        'orderby' => 'modified',
        'post_type'  => array( 'post', 'page' ),
        'order'    => 'DESC'
    ));
    $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
    $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">';
    foreach( $postsForSitemap as $post ) {
        setup_postdata( $post );
        $postdate = explode( " ", $post->post_modified );
        $sitemap .= '<url>'.
          '<loc>' . get_permalink( $post->ID ) . '</loc>' .
          '<lastmod>' . $postdate[0] . '</lastmod>' .          
         '</url>';
      }
    $sitemap .= '</urlset>';
    $fp = fopen( ABSPATH . 'sitemap.xml', 'w' );
    fwrite( $fp, $sitemap );
    fclose( $fp );
}

Es opcional cambiarle el nombre al archivo creado, modificando la línea 22.


Probar y enviar el sitemap.xml a Google

Después de comprobar que el sitemap.xml se crea correctamente después de cada publicación, debemos de probarlo y enviarlo a Google.
Para eso necesitamos poseer una cuenta en Search Console de Google, si no es así crear una nueva.
Después de eso accede a Panel de Sitemaps en Rastreo y presiona el botón “Añadir” o probar sitemap.
Introduce la dirección del archivo y presiona “Probar”.
En caso de que la prueba se exitosa vuelve atrás y presiona “Enviar”.
Probar y enviar un sitemap.xml a Google
Es todo.
No se necesita ninguna otra acción, los buscadores revisarán regularmente el archivo en busca de nuevas páginas en él listadas.


Agregar el sitemap.xml al archivo Robots.txt

El último paso necesario es agregar la ruta o dirección del sitemap.xml al archivo Robots.txt del sitio, para asegurar que los robots lo encuentren e indexen correctamente las páginas en él listadas.
Un archivo Robots.txt posee el siguiente formato:

# Google AdSense
User-agent: Mediapartners-Google
Disallow:
# global
User-agent: *
Sitemap: https://norfipc.com/sitemap.xml

Después de crearlo no es necesaria ninguna acción.
Solo está destinado a los bots que acceden al sitio.
Lee más información detallada: Como crear un archivo Robots.txt


Errores al crear el archivo sitemap.xml

El único error que puede causar que no se escriba el archivo sitemap.xml correctamente, se puede deber a que no se cuenta con los permisos necesarios en la carpeta raíz del blog.
Esto sucede en algunas instalaciones.
Para solucionarlo debemos permitir que el usuario Apache cuente con permisos de escritura.
En WordPress el directorio raíz y todas las subcarpetas deben de poseer el permiso 755, pero hay que agregarle también “www-data”.
Para eso introduce en la consola la siguiente instrucción o agrégala manualmente mediante CPanel.

chown -R www-data:www-data /home/cuenta/public_html/

Sustituye los datos de tu blog.

Más información

Como crear un Sitemap o Mapa del sitio
Como crear un archivo Robots.txt

Estoy en: NorfiPC | Notas | WordPress | Como crear un sitemap.xml para WordPress sin plugins



Páginas relacionadas

Buscar con Google