Como agregar un sitemap en WordPress sin usar plugins



Desde mis inicios como Blogger conocí la importancia de que mi blog tenga un sitemap, esto hace que Google pueda indexar cada una de las páginas de mi sitio web sin problemas.

Existen muchos plugins en WordPress que pueden ayudarte a publicar un sitemap, pero siempre trato de mantener los plugins de WordPress al mínimo.

Lo primero que debes hacer es ubicar la carpeta del tema que estás usando, por ejemplo en mi caso la carpeta es esta:

wp-content/themes/twentynineteen

Dentro de esas carpetas, vas a encontrar un archivo llamado functions.php, lo abres y te vas hasta el final del archivo y agregamos este código:

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">';

    foreach( $postsForSitemap as $post ) {
        setup_postdata( $post );

        $postdate = explode( " ", $post->post_modified );

        $sitemap .= '<url>'.
          '<loc>' . get_permalink( $post->ID ) . '</loc>' .
          '<lastmod>' . $postdate[0] . '</lastmod>' .
          '<changefreq>monthly</changefreq>' .
         '</url>';
      }

    $sitemap .= '</urlset>';

    $fp = fopen( ABSPATH . 'sitemap.xml', 'w' );

    fwrite( $fp, $sitemap );
    fclose( $fp );
}

Ahora cuando crees un nuevo articulo o post, se actualizará tu sitemap. Hasta ahora no puedes probarlo, por que el sitemap no existe, pero puedes generarlo publicando un articulo vacío y luego borrándole, esto hará que WordPress detecte un cambio y regenere el sitemap, creándolo. Luego se mantendrá actualizado cada vez que publiques algo nuevo.

Para verlo son ingresas a www.tudominio.com/sitemap.xml (tienes que reemplazar esto con tu verdadero dominio.)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *