Personalice y amplíe el complemento de WordPress Google XML Sitemaps

En este tutorial veremos cómo instalar y configurar un complemento muy útil para agregar múltiples sitemaps XML a nuestro sitio web con WordPress: Mejor WordPress Google XML Sitemaps.

También aprenderemos cómo extenderlo fácilmente escribiendo un complemento personalizado para excluir varios elementos de los mapas de sitio y también escribiremos un módulo adicional para agregar un nuevo mapa del sitio personalizado..


Introducción

Un sitemap es una herramienta poderosa que le permite a un webmaster proporcionar información detallada sobre la estructura de un sitio para facilitar el rastreo de páginas por los motores de búsqueda..

En su forma más simple, un mapa del sitio es un archivo XML que enumera las URL de un sitio junto con metadatos adicionales sobre cada URL (cuándo se actualizó por última vez, con qué frecuencia suele cambiar y qué tan importante es, en relación con otras URL del sitio). ) para que los motores de búsqueda puedan rastrear el sitio de manera más inteligente. (Fuente)

Antes de comenzar, permítame hacer una breve aclaración: no soy el desarrollador de este complemento, solo lo usé en un proyecto reciente en el que trabajé. Como me resultó muy útil, decidí escribir un tutorial sobre cómo extenderlo. Si tiene preguntas detalladas sobre sus características, no dude en ponerse en contacto directamente con el autor del complemento..


Paso 1 Instalar y configurar mejor WordPress Google XML Sitemaps Plugin

La característica principal de Better WordPress Google XML Sitemaps (BWP GXS) es que crea un índice de mapa del sitio y Diferentes sitemaps para cada sección de su blog: Publicaciones (en este caso, también puede dividir grandes sitemaps en múltiples más pequeñas), Páginas, Publicaciones personalizadas, Categorías, Etiquetas, Taxonomías personalizadas, Archivos de fecha y autor, un Sitemap de Google Noticias, Páginas externas y así sucesivamente ... puede personalizar todos estos comportamientos y activar las distintas secciones en la página de configuración del complemento.

Además, este complemento agrega un enlace al índice del mapa del sitio al robots.txt archivo de su sitio.

Por último, se puede extender de dos maneras diferentes: a través de sus API de Hooks y mediante la creación de módulos personalizados. De todos modos, puede encontrar información muy detallada sobre sus características en la página de complementos en el repositorio de complementos de WordPress.

BWP GXS también es compatible con instalaciones de sitios múltiples de WordPress.

Después de la instalación y la activación, haga clic en el Generador de Sitemap enlace debajo del BWP GXS menú. Aquí puede ajustar todos los aspectos del complemento: puede configurar, por ejemplo, el Frecuencia de cambio predeterminada de los sitemaps, cuántos elementos de la lista y así sucesivamente ... Lo interesante aquí es que usted tiene un buen control sobre todos los sitemaps activos: publicaciones, páginas, tipos de publicaciones personalizadas, categorías, etiquetas y taxonomías personalizadas. Para este tutorial, he creado un Película Tipo de mensaje personalizado y un Género Taxonomía personalizada, puedes verlas en la captura de pantalla..

Ahora, si abres http://yoursite.com/sitemapindex.xml (o http://yoursite.com/?bwpsitemap=sitemapindex Si no usa los enlaces permanentes en su navegador, verá el índice del mapa del sitio con los mapas del sitio activos: cada enlace apunta al mapa del sitio de una sección específica.

Tenga en cuenta que esta es también la única URL que debe configurar en la cuenta de las Herramientas para webmasters de Google de su sitio web.

La única limitación aquí es que no es posible excluir artículos específicos desde los respectivos sitemaps.

Digamos que queremos excluir:

  • Cinco mensajes del sitemap de Posts (post.xml)
  • tres mensajes de la Película Publicaciones personalizadas mapa del sitio (post_movie.xml)
  • una página desde el sitemap de Pages (page.xml)
  • dos categorías del sitemap de Categorías (taxonomy_category.xml)
  • una etiqueta de las etiquetas del mapa del sitio (taxonomy_post_tag.xml)
  • dos artículos de taxonomía personalizados de la Género mapa del sitiotaxonomy_genre.xml)

¿Cómo podemos hacer esto? Afortunadamente, el complemento se puede extender fácilmente gracias a sus ganchos, por lo que podemos escribir un complemento dedicado.

Crear un nuevo archivo llamado bwpgxs-extended-configuration.php, Ábrelo en tu editor de texto favorito y pega esto:

 

Copie el archivo en su / wp-content / plugins / directorio y activarlo en el Complementos Página de administrador.


Paso 2: Excluir publicaciones y categorías de los sitemaps

Como dije, el mejor complemento de WordPress Google XML Sitemaps se puede ampliar. Según la descripción del plugin:

En la versión 1.1.0, se han agregado más enlaces a los módulos predeterminados para permitir una personalización más sencilla de las consultas SQL utilizadas para construir sus sitemaps ...
(Fuente)

Para ser más específicos, BWP GXS nos permite excluir publicaciones, páginas y publicaciones personalizadas a través de las ID, mientras que nos permite excluir taxonomías a través de sus slugs.

Excluir artículos manualmente

Por lo tanto, vamos a utilizar ganchos BWP GXS en nuestro Configuración extendida de BWP GXS plugin, específicamente: bwp_gxs_post_where y bwp_gxs_term_exclude, como se explica en la página de descripción de BWP GXS (para más detalles sobre los ganchos de WordPress, puede leer el Acerca de los ganchos de WordPress párrafo en un artículo anterior que escribí para Wptuts +).

Añade estas líneas a nuestro Configuración extendida de BWP GXS enchufar:

 // EXCLUIR POSTES, PÁGINAS, PUNTOS PERSONALIZADOS add_filter ('bwp_gxs_post_where', 'my_bwp_gxs_exclude_posts', 10, 2); // EXCLUIR TAXONOMÍAS add_filter ('bwp_gxs_term_exclude', 'my_bwp_gxs_exclude_terms', 10, 2); function my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) switch ($ post_type) case 'post': return 'AND wposts.ID NOT IN (1, 2, 3, 4, 5, 5)'; descanso; caso 'movie': return 'AND wposts.ID NOT IN (7, 8, 9)'; descanso; caso 'página': devolver 'AND wposts.ID NOT IN (6)'; descanso;  return "; function my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) switch ($ taxonomy) case 'category': return array ('cat-slug1', 'cat-slug2'); break; case 'post_tag': return array ('tag-slug1'); break; caso 'género': return array ('genre-slug1', 'genre-slug2'); break; return array ("); 

De esta manera excluiremos:

  • Mensajes con ID: 1, 2, 3, 4, 5
  • Una página con ID: 6
  • Película Publicaciones personalizadas con ID: 7, 8, 9
  • Categorías con babosa: cat-slug1 y cat-slug2
  • Una etiqueta con babosa: tag-slug1
  • Género Taxonomía personalizada, artículos con babosa: genre-slug1 y genre-slug2

Excluir artículos dinámicamente

Sin embargo, esta solución no es fácil de mantener: cada vez que desee excluir un nuevo elemento, debe editar manualmente el Configuración extendida de BWP GXS archivo de núcleo de plugin. Sería mejor tener una página de Configuración dedicada donde pueda configurar los elementos a excluir. Para hacer esto, podemos decirle a nuestro complemento que agregue un panel de configuración personalizado en el menú BWP GXS.

Agrega estas líneas al plugin:

  

Excluir elementos de XML Sitemaps

ID de publicación
(separado por comas)
ID de película
(separado por comas)
ID de página
(separado por comas)
Categoría Slugs
(separado por comas)
Tag Slugs
(separado por comas)
Babosas de genero
(separado por comas)

Guarde los cambios y ahora tendrá un nuevo enlace en el menú del complemento BWP GXS: Excluir artículos Página donde puede excluir todos los elementos que desee:

Ahora es el momento de modificar el my_bwp_gxs_exclude_terms y my_bwp_gxs_exclude_posts Funciones para apoyar nuestras opciones personalizadas y hacer que funcionen dinámicamente:

 // CATEGORÍAS, ETIQUETAS Y TAXONOMÍA PERSONALIZADA 'GENRE' funcionan my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) $ options = get_option ('my_bwp'); switch ($ taxonomy) case 'category': if ($ options ['bwp_exclude_categories']) return explode (',', $ options ['bwp_exclude_categories']);  rotura; caso 'post_tag': if ($ options ['bwp_exclude_post_tost']) return explode (',', $ options ['bwp_exclude_post_tags']);  rotura; caso 'género': if ($ options ['bwp_exclude_genre']) return explode (',', $ options ['bwp_exclude_genre']);  rotura;  devolver matriz ("); // POSTES Y PERSONALIZADO POST TIPO" PELÍCULA "función my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) $ options = get_option ('my_bwp'); switch ($ post_type) case 'post': if ($ options ['bwp_exclude_posts']) return 'AND wposts.ID NOT IN ('. $ options ['bwp_exclude_posts']. ')'; break; caso 'movie': if ($ options ['bwp_exclude_movies'] ) return 'AND wposts.ID NOT IN ('. $ options ['bwp_exclude_movies']. ')'; break; case 'page': if ($ options ['bwp_exclude_pages']) return 'AND wposts.ID NOT IN ('. $ Options [' bwp_exclude_pages '].') '; Break; return "; 

Paso 3 Agregar un Sitemap XML personalizado

BWP GXS también se puede ampliar con adicionales módulos para crear sitemaps XML personalizados. Esto significa que puede agregar un mapa del sitio para una sección específica de su sitio web que no es parte del sistema de WordPress, tal vez porque no está integrado en WordPress en el nivel de la base de datos, ya que utiliza diferentes tablas de base de datos de las predeterminadas de WordPress. Una gran cosa es que, a través de los módulos, puede aprovechar las ventajas de la base de datos del complemento, GZip y las funciones de almacenamiento en caché..

Pongamos un ejemplo: tengo una galería de fotos que utiliza sus tablas de base de datos y no se puede acceder directamente a estas tablas mediante las funciones internas de WordPress, como get_posts (), o similar. Por lo tanto, para acceder a los datos, es necesario realizar una consulta directa a una tabla específica. Aunque toda la sección de la galería de fotos es externo Para WordPress, podemos crear un mapa del sitio XML de los álbumes de fotos que BWP GXS enlazará en el índice del mapa del sitio. En este ejemplo, para simplificar, haré un mapa del sitio solo para los álbumes y no para todas las fotos individuales..

Detalles técnicos de la galería de fotos

Los álbumes de la galería de fotos se almacenan en un galería de fotos mesa:

 CREATE TABLE 'photo_gallery' ('album_ID' int (4) NOT NULL AUTO_INCREMENT, 'album_name' varchar (255) NOT NULL DEFAULT ", 'album_nicename' varchar (255) NOT NULL DEFAULT", 'album_date' datetime NOT NULL DEFAULT '0000 -00-00 00:00:00 ',' album_status 'enum (' publish ',' draft ',' private ') NOT NULL DEFAULT' draft ', PRIMARY KEY (' album_ID '), UNIQUE KEY' album_nicename '(' album_nicename '));

En cambio, las fotos individuales se almacenan en otra tabla, pero como se dijo, no agregaremos las URL de las fotos al mapa del sitio, solo las URL del álbum. Cada álbum tiene una URL como esta:
http://yoursite.com/photo/album-nicename

Y a todos ellos se les añadirá la nueva galería de fotos XML del mapa del sitio..

También se recomienda encarecidamente, para crear entradas de sitemap válidas, tener un fecha y hora> tipo de campo en la tabla.

La característica de los módulos BWP GXS

En el Generador de Sitemap página de administración, hay una Opciones del módulo sección. En el Directorio de módulo alternativo campo debe establecer la ruta completa al directorio que contendrá el módulo de mapa de sitio de la galería de fotos.

Por ejemplo puedes crear un gxs-modules directorio en wp-contenido Donde tienes que poner el script PHP del módulo. Cada mapa del sitio personalizado, de hecho, necesita su propio módulo: un módulo BWP GXS es ​​un simple .php archivo que contiene una clase que extiende la BWP_GXS_MODULE clase proporcionada por BWP GXS.

En esta página también puede configurar la cantidad de elementos que se mostrarán en el mapa del sitio a través de No obtener mas que campo.

Escribiendo el módulo de la galería de fotos

Crear un nuevo archivo llamado photo_gallery.php. Ábrelo en tu editor de texto favorito y pega esto:

 set_current_time (); $ this-> build_data ();  function build_data () global $ wpdb, $ bwp_gxs; / * PREGUNTA PARA CONSEGUIR ÁLBUMES - LA TABLA ESTÁ EN EL MISMO DB DE WORDPRESS, PARA QUE USTED PUEDE UTILIZAR AQUÍ LA CLASE DE WORDPRESS DE wpdb PARA INTERACTAR CON LA BASE DE DATOS * / $ albums = $ wpdb-> get_results ("SELECCIONAR album_nicename, album_date FROM photo_gallery album_date DESC "); / * SI LA TABLA ESTÁ EN OTRA BASE DE DATOS, PUEDE USAR LAS FUNCIONES DE MYSQL DE PHP * / if (! Isset ($ albums) || 0 == sizeof ($ albums)) return false; $ data = array (); para ($ i = 0; $ i < sizeof( $albums ); $i++ )  $album = $albums[$i]; $data = $this->init_data ($ data); // REEMPLACE ESTO CON LA URL CORRECTA PARA SUS ÁLBUMES // ESPECIALMENTE LA URL DE SU SITIO WEB $ data ['location'] = 'http://yoursite.com/photo/'. $ album-> album_nicename; $ data ['lastmod'] = $ this-> format_lastmod (strtotime ($ album-> album_date)); $ data ['freq'] = "semanal"; $ datos ['prioridad'] = 1; $ this-> data [] = $ data;  devuelve true; ?>

Dos cosas muy importantes:

  1. En el $ datos ['ubicación'] línea que debes reemplazar http://yoursite.com con la URL de su sitio web, de lo contrario, el módulo arrojará un error de mapa del sitio vacío;
  2. Valores permitidos para $ datos ['freq'] son: siempre, cada hora, diario, semanal, mensual, anual, Nunca;

Finalmente guárdalo en tu wp-content / gxs-modules directorio.

Activando el módulo de la galería de fotos

Ahora es el momento de decirle a BWP GXS que cargue nuestro módulo. Vuelve a tu Configuración extendida de BWP GXS plugin y añadir estas líneas a la bwpgxs-extended-configuration.php expediente:

 add_action ('bwp_gxs_modules_built', 'my_bwp_gxs_add_modules'); function my_bwp_gxs_add_modules () global $ bwp_gxs; $ bwp_gxs-> add_module ('photo_gallery'); 

Si está usando un enlace permanente bonito, también puede tener una URL bonita para la página del Mapa de Fotos de la Galería de Fotos, algo como http://yoursite.com/photo_gallery.xml.

También agregue estas líneas, guarde y No olvides actualizar tu configuración de Permalink.:

 add_filter ('bwp_gxs_rewrite_rules', 'my_bwp_gxs_add_rewrite_rules'); function my_bwp_gxs_add_rewrite_rules () $ my_rules = array ('photo_gallery.xml' => 'index.php? gxs_module = photo_gallery'); devuelve $ my_rules; 

El resultado final será este (observe el nuevo mapa del sitio personalizado). photo_gallery.xml):

Si hace clic en el photo_gallery.xml enlace, verá el Mapa del sitio XML de la Galería fotográfica que contiene todos los enlaces a sus galerías fotográficas:


En conclusión

Better WordPress Google XML Sitemaps es un complemento muy útil. Tiene muchas características de las que no tenemos tiempo para hablar más aquí, pero puedes descubrirlas todas una vez que las instales. Como hemos visto, es extremadamente configurable y extensible, y le permite tener soporte completo de mapas de sitio en su sitio web.

Definitivamente una muy buena herramienta para mejorar la visibilidad de su sitio en los motores de búsqueda..


Referencias

  • Mejores WordPress Google XML Sitemaps en el repositorio oficial de plugins de WordPress
  • Mejor documentación de WordPress Google XML Sitemaps
  • WordPress Hooks and Filters: API de complemento de WordPress, acerca de los ganchos de WordPress en Agregar una columna personalizada en la pantalla de administración de publicaciones y tipos de publicaciones personalizadas
  • Tipos de mensajes personalizados de WordPress
  • Manejando opciones de plugins en WordPress 2.8 con register_setting ()
  • Ayuda de Google Webmaster Tools, creación de sitemaps, definiciones de etiquetas de sitemap