Nova funcionalidade de Sitemaps XML no WordPress 5.5

Muitos plug-ins fornecem mapas de sites há muitos anos, como Yoast, All-in-One-SEO, Jetpack e muito mais. Agora o WordPress decidiu que precisa estar no núcleo, de modo que todos os usuários (podem) ter um para seu site, independentemente dos plug-ins.

No WordPress 5.5, um novo recurso está sendo introduzido, adicionando funcionalidade de sitemaps XML extensível e básica ao núcleo do WordPress .

Embora os rastreadores da web sejam capazes de descobrir páginas de links dentro do site e de outros sites, os mapas de sites complementam essa abordagem, permitindo que os rastreadores identifiquem de forma rápida e abrangente todos os URLs incluídos no mapa do site e aprendam outros sinais sobre esses URLs usando os metadados associados.

Este artigo explica em detalhes as várias maneiras em que esse novo recurso pode ser personalizado pelos desenvolvedores. Por exemplo, se você está desenvolvendo um plugin com alguma funcionalidade semelhante, este post mostrará como você pode integrá-lo ao novo recurso de sitemaps do núcleo.

Principais dicas

Com a versão 5.5., O WordPress irá expor um índice de mapa do site em /wp-sitemap.xml. Este é o arquivo XML principal que contém a listagem de todas as páginas do mapa do site expostas por um site WordPress.

O índice do mapa do site pode conter no máximo 50.000 mapas do site e um único mapa do site pode conter no máximo (filtrável) 2.000 entradas.

Por padrão, os sitemaps são criados para todos os tipos de postagem e taxonomias públicas e publicamente consultáveis, bem como para arquivos do autor e, claro, a página inicial do site.

robots.txt arquivo exposto pelo WordPress fará referência ao índice do mapa do site para que ele possa ser facilmente descoberto pelos motores de busca.

Requerimentos técnicos

Renderizar sitemaps no front-end requer a extensão SimpleXML PHP . Se esta extensão não estiver disponível, uma mensagem de erro será exibida em vez do mapa do site. O código de status HTTP 501 (“Não implementado”) será enviado em conformidade.

Configurando o comportamento dos Sitemaps

Adicionar Sitemaps Personalizados

O WordPress fornece sitemaps para tipos de conteúdo integrados, como páginas e arquivos do autor prontos para uso. Se você estiver desenvolvendo um plug-in que adiciona recursos personalizados além daqueles padrão, ou apenas deseja incluir alguns URLs personalizados em seu site, pode fazer sentido adicionar um provedor de mapa de site personalizado.

Para fazer isso, tudo o que você precisa fazer é criar uma classe PHP customizada que estende a WP_Sitemaps_Provider classe abstrata no núcleo. Então, você pode usar a wp_register_sitemap_provider() função para registrá-lo. Aqui está um exemplo:

add_filter(
    'init',
    function() {
        $provider = new Awesome_Plugin_Sitemaps_Provider();
        wp_register_sitemap_provider( 'awesome-plugin', $provider );
    }
);

O provedor será responsável por obter todos os mapas de sites e entradas de mapas de sites, bem como por determinar a paginação.

Removendo Certos Sitemaps

Existem três provedores de sitemaps existentes para tipos de objeto do WordPress, como postagens, taxonomias e usuários. Se você deseja remover um deles, digamos o provedor “usuários”, você pode usar o wp_sitemaps_add_provider filtro para fazer isso. Aqui está um exemplo:

add_filter(
    'wp_sitemaps_add_provider',
    function( $provider, $name ) {
        if ( 'users' === $name ) {
            return false;
        }
 
        return $provider;
    },
    10,
    2
);

Se, em vez disso, você deseja desabilitar a geração de sitemap para um tipo de postagem ou taxonomia específica , use o filtro wp_sitemaps_post_types ou wp_sitemaps_taxonomies, respectivamente.

Exemplo: Desativando mapas de sites para o page tipo de postagem

add_filter(
    'wp_sitemaps_post_types',
    function( $post_types ) {
        unset( $post_types['page'] );
        return $post_types;
    }
);

Exemplo: Desativando sitemaps para a post_tag taxonomia

add_filter(
    'wp_sitemaps_taxonomies',
    function( $taxonomies ) {
        unset( $taxonomies['post_tag'] );
        return $taxonomies;
    }
);

Adicionando tags adicionais às entradas do Sitemap

protocolo de mapas de sites especifica um determinado conjunto de atributos com suporte para entradas de mapas de sites. Destes, apenas a tag URL ( loc) é necessária. Todos os outros (por exemplo, changefreq e priority ) são tags opcionais no protocolo de mapas de site e não são normalmente consumidos por mecanismos de pesquisa, razão pela qual o WordPress lista apenas o próprio URL. Os desenvolvedores ainda podem adicionar essas tags se realmente quiserem.

Você pode usar os filtros wp_sitemaps_posts_entrywp_sitemaps_users_entrywp_sitemaps_taxonomies_entry para adicionar tags adicionais changefreq, como priority, ou lastmod para itens únicos no mapa do site.

Exemplo: adicionar a data da última modificação para postagens

add_filter(
    'wp_sitemaps_posts_entry',
    function( $entry, $post ) {
        $entry['lastmod'] = $post->post_modified_gmt;
        return $entry;
    },
    10,
    2
);

Da mesma forma, você pode usar o filtro wp_sitemaps_index_entry para adicionar lastmod ao índice do mapa do site. Observação: o protocolo de sitemaps não é compatível com o índice de sitemap.

Tentar adicionar qualquer tag não suportada resultará em um aviso _doing_it_wrong.

Excluindo uma única postagem do Sitemap

Se você estiver desenvolvendo um plugin que permite definir postagens ou páginas específicas como noindex, é uma boa ideia excluí-las do mapa do site também.

O filtro wp_sitemaps_posts_query_args pode ser usado para excluir postagens específicas do mapa do site. Aqui está um exemplo:

add_filter(
    'wp_sitemaps_posts_query_args',
    function( $args, $post_type ) {
        if ( 'post' !== $post_type ) {
            return $args;
        }
 
        $args['post__not_in'] = isset( $args['post__not_in'] ) ? $args['post__not_in'] : array();
        $args['post__not_in'][] = 123; // 123 is the ID of the post to exclude.
        return $args;
    },
    10,
    2
);

Desativando completamente a funcionalidade de Sitemaps

Se você atualizar as configurações de Visibilidade do site no administrador do WordPress para desencorajar os mecanismos de pesquisa de indexar seu site, os mapas do site serão desativados. Você pode usar o wp_sitemaps_enabledfiltro para substituir o comportamento padrão.

Aqui está um exemplo de como desativar os sitemaps completamente, não importa o que aconteça:

add_filter( 'wp_sitemaps_enabled', '__return_false' );

Nota : Fazer isso não removerá as regras de reescrita usadas para os mapas de site, pois elas são necessárias para enviar respostas apropriadas quando os mapas de site são desativados.

Quer saber se os mapas do site estão habilitados ou não? Use wp_sitemaps_get_server()->sitemaps_enabled().

Sitemaps de imagem / vídeo / notícias

O WordPress atualmente implementa e oferece suporte ao formato de sitemaps principal, conforme definido em sitemaps.org . Extensões de sitemap, como imagem, vídeo e sitemaps de notícias, não são abrangidas por esse recurso, pois geralmente são úteis apenas para um pequeno número de sites. Em versões futuras do WordPress, filtros e ganchos podem ser adicionados para permitir a adição de tal funcionalidade. Por enquanto, isso ainda será deixado para os plug-ins implementarem.

Novas classes e funções

No momento em que este artigo foi escrito, esta é a lista completa das novas classes e funções introduzidas com esse recurso.

Funções:

  • wp_sitemaps_get_server – Recupera a instância do servidor Sitemaps atual.
  • wp_get_sitemap_providers – Obtém uma variedade de provedores de mapas de sites.
  • wp_register_sitemap_provider – Registra um novo provedor de mapa de site.
  • wp_sitemaps_get_max_urls – Obtém o número máximo de URLs para um sitemap.

Aulas:

  • WP_Sitemaps – Principal classe responsável por configurar reescritas e registrar todos os provedores.
  • WP_Sitemaps_Index – Cria a página de índice do sitemap que lista os links para todos os sitemaps.
  • WP_Sitemaps_Provider – Classe base para outros provedores de mapa de site estenderem e contém funcionalidade compartilhada.
  • WP_Sitemaps_Registry – Lida com o registro de provedores de mapa de site.
  • WP_Sitemaps_Renderer – Responsável por renderizar dados de Sitemaps para XML de acordo com o protocolo de mapa de site.
  • WP_Sitemaps_Stylesheet – Esta classe fornece as folhas de estilo XSL para definir o estilo de todos os mapas do site.
  • WP_Sitemaps_Posts – Constrói os mapas do site para o tipo de objeto ‘postagem’ e seus subtipos (tipos de postagem personalizados).
  • WP_Sitemaps_Taxonomies – Constrói os mapas do site para o tipo de objeto ‘taxonomia’ e seus subtipos (taxonomias personalizadas).
  • WP_Sitemaps_Users – Constrói os mapas do site para o tipo de objeto ‘usuário’.

Ganchos e filtros disponíveis

No momento em que este artigo foi escrito, esta é a lista completa de ganchos e filtros disponíveis.

Geral:

  • wp_sitemaps_enabled – Filtra se os Sitemaps XML estão habilitados ou não.
  • wp_sitemaps_max_urls – Filtra o número máximo de URLs exibidos em um mapa do site.
  • wp_sitemaps_init – Dispara ao inicializar mapas de sites.
  • wp_sitemaps_index_entry – Filtra a entrada do mapa do site para o índice do mapa do site.

Provedores:

  • wp_sitemaps_add_provider – Filtra o provedor de mapa do site antes de ser adicionado.
  • wp_sitemaps_post_types – Filtra a lista de tipos de postagem a serem incluídos nos mapas do site.
  • wp_sitemaps_posts_entry – Filtra a entrada do mapa do site para uma postagem individual.
  • wp_sitemaps_posts_show_on_front_entry – Filtra a entrada do mapa do site para a página inicial quando a opção ‘show_on_front’ é igual a ‘postagens’.
  • wp_sitemaps_posts_query_args – Filtra os argumentos de consulta para consultas de mapa de site do tipo post.
  • wp_sitemaps_posts_pre_url_list – Filtra a lista de URLs de postagens antes de ser gerada (curto-circuito).
  • wp_sitemaps_posts_pre_max_num_pages – Filtra o número máximo de páginas antes de ser gerado (curto-circuito).
  • wp_sitemaps_taxonomies – Filtra a lista de taxonomias a serem incluídas nos mapas do site.
  • wp_sitemaps_taxonomies_entry – Filtra a entrada do mapa do site para um termo individual.
  • wp_sitemaps_taxonomies_query_args – Filtra os argumentos de consulta para consultas de mapa de site de termos de taxonomia.
  • wp_sitemaps_taxonomies_pre_url_list – Filtra a lista de taxonomias de URL antes de ser gerada (curto-circuito).
  • wp_sitemaps_taxonomies_pre_max_num_pages – Filtra o número máximo de páginas antes de ser gerado (curto-circuito).
  • wp_sitemaps_users_entry – Filtra a entrada do mapa do site para um usuário individual.
  • wp_sitemaps_users_query_args – Filtra os argumentos de consulta para consultas de mapa do site do usuário.
  • wp_sitemaps_users_pre_url_list – Filtra a lista de URLs dos usuários antes de gerá-la (curto-circuito).
  • wp_sitemaps_users_pre_max_num_pages – Filtra o número máximo de páginas antes de ser gerado (curto-circuito).

Folhas de estilo:

  • wp_sitemaps_stylesheet_css– Filtra o CSS para a folha de estilo do mapa do site.
  • wp_sitemaps_stylesheet_url – Filtra o URL da folha de estilo do mapa do site.
  • wp_sitemaps_stylesheet_content – Filtra o conteúdo da folha de estilo do mapa do site.
  • wp_sitemaps_stylesheet_index_url – Filtra o URL da folha de estilo do índice do mapa do site.
  • wp_sitemaps_stylesheet_index_content – Filtra o conteúdo da folha de estilo do índice do mapa do site.

·

Junte-se a nós e esteja sempre atualizado com as últimas novidades e dicas