wp_sitemaps_posts_entry
Позволяет добавить дополнительные теги (поля) для отдельных URL карты сайта записей (постов): changefreq, priority, lastmod.
Протокол sitemaps поддерживает четыре атрибута для каждого элемента <url>
карты сайта (по умолчанию в WP используется только <loc>
) Остальные можно добавить через этот фильтр. Подробнее читайте в статье Карта сайта WordPress.
Аналогичные фильтры, которые можно использовать для добавления дополнительных тегов: changefreq, priority, lastmod к ссылкам на страницы элементов таксономий и юзеров.
- wp_sitemaps_taxonomies_entry
- wp_sitemaps_users_entry
- wp_sitemaps_index_entry - главная страница карты сайта.
Использование
add_filter( 'wp_sitemaps_posts_entry', 'wp_kama_sitemaps_posts_entry_filter', 10, 3 ); /** * Function for `wp_sitemaps_posts_entry` filter-hook. * * @param array $sitemap_entry Sitemap entry for the post. * @param WP_Post $post Post object. * @param string $post_type Name of the post_type. * * @return array */ function wp_kama_sitemaps_posts_entry_filter( $sitemap_entry, $post, $post_type ){ // filter... return $sitemap_entry; }
- $sitemap_entry(массив)
- Массив текущих элементов тега <url> в карте сайта.
- $post(WP_Post)
- Объект записи, для которого создается ссылка в карте сайта.
- $post_type(строка)
- Название типа записи. Можно получить из предыдущего параметра так:
$post->post_type
.
Примеры
#1 Добавим тег <lastmod> в карту сайта записей (постов)
add_filter( 'wp_sitemaps_posts_entry', 'kama_sitemaps_posts_entry', 10, 2 ); function kama_sitemaps_posts_entry( $entry, $post ) { $entry['lastmod'] = $post->post_modified_gmt; return $entry; }
Было до хука:
... <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://example.com/template-sticky/</loc> </url> ...
Стало после хука:
... <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://example.com/template-sticky/</loc> <lastmod>2020-02-28 21:36:01</lastmod> </url> ...
Список изменений
С версии 5.5.0 | Введена. |
Где вызывается хук
wp-includes/sitemaps/providers/class-wp-sitemaps-posts.php 164
$sitemap_entry = apply_filters( 'wp_sitemaps_posts_entry', $sitemap_entry, $post, $post_type );