Sitemap.xml para WordPress con PHP

Todas las paginas web incluyen en su sitio un archivo sitemap.xml, ¿pero para que sirve este archivo?, la verdad es que es bien sencillo, dentro del archivo sitemap.xml se guarda un listado de todos nuestros artículos, paginas y custom post types con su fecha de última modificación, como no podía ser menos, WordPress también hace uso del archivo sitemap.xml.

Pero desgraciadamente no lo hace de forma nativa, es decir, WordPress todavía no tiene una función nativa para crear un archivo sitemap.xml en nuestro sitio web o blog, de manera que la mayoría de personas lo que hacen es utilizar plugins como “all in one seo“, “yoast seo” o “Google XML sitemap“, este último muy sencillo de utilizar.

Pero bueno, nosotros veremos una manera diferente de crear un archivo sitemap.xml para nuestro WordPress con un poco de código en nuestro functions.php o en nuestro plugin de funciones.

Para ello, y como siempre, vamos a la raíz de nuestro Theme y abrimos el archivo functions.php con nuestro ID de programación favorito, o a la carpeta plugins y abrimos nuestro plugin de funciones con el mismo ID de programación, después vamos al final de todo el código que tengamos y copiamos y pegamos el siguiente código que os dejamos a continuación.




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

Como podéis ver, lo primero que hacemos es llamar a la acción publish post y page y le añadimos la función que creamos más abajo “create_sitemap”, de esta manera le decimos que vamos a trabajar con artículos y paginas, en el array le decimos que nos liste post y pages ilimitados, ordenados por fecha de modificación y descendiente.

Y luego empezamos a crear la estructura del archivo sitemap.xml, primero le pasamos las cabeceras al archivo, luego creamos un loop donde le pasamos también los parámetros o etiquetas que debe llevar cada elemento de la lista, y finalmente creamos el archivo físico en la raíz de nuestro WordPress.

Debemos tener en cuenta que la función no se ejecuta hasta que se cree un artículo o pagina nueva, es decir, que una vez tengamos la función agregada a nuestro functions.php o a nuestro plugin de funciones, esta no hará nada en absoluto, en cambio, en el momento que se cree un artículo o pagina nueva, de forma automática se creará el archivo sitemap.xml, y también de forma automática el archivo se re generara cada vez que creemos un artículo o pagina más para agregarla al listado.

238 Visitas

20 febrero, 2020 por ricard

ricard
Soy Ricard FS, me dedico a la programación desde el año 2000, me dediqué en pleno a WordPress desde el año 2015, ahora creo Plugins y Theme para WordPress desde código cero, y me gusta la divulgación de código, por ello la creación de este blog.

Deja tu comentario

Deja una respuesta

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

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: