A Sitemap is an essential tool for any website if it wants to get indexed by search engines. The search engines make use of these Sitemaps to get more information about the website. A sitemap informs Google which pages and files on your site you think are relevant, as well as useful information about these files, such as when the page was last modified, how often it is changed, and any alternate language versions of the page. Thus, it is nothing but a blueprint of the website.
In this knowledgebase article, we’re going to walk you through how to create a Custom Sitemap and include it in Rank Math.
How to Create a Custom Sitemap and Include It in Rank Math
1 Create a New File in the Child Theme
Navigate to WordPress Dashboard → Appearance → Theme File Editor (for Classic Theme).
![Theme File Editor in Classic Theme](https://rankmath.com/wp-content/uploads/2022/03/Navigate-to-Theme-File-Editor.png)
Or you should head over to WordPress Dashboard → Tools → Theme File Editor if you are using a Block Theme.
![Theme File Editor in Block Theme](https://rankmath.com/wp-content/uploads/2022/05/Theme-File-Editor.png)
Now, create a new file in your child theme folder (assuming you’ve added the previous filter codes in the rank-math.php file of your child theme), name it custom-sitemap.php, and add the following code to it. You can also refer to this article to understand how to add or create filters on your theme files, in case, you’ve not created one before.
<?php
namespace RankMath\Sitemap\Providers;
defined( 'ABSPATH' ) || exit;
class Custom implements Provider {
public function handles_type( $type ) {
return 'custom' === $type;
}
public function get_index_links( $max_entries ) {
return [
[
'loc' => \RankMath\Sitemap\Router::get_base_url( 'custom-sitemap.xml' ),
'lastmod' => '',
]
];
}
public function get_sitemap_links( $type, $max_entries, $current_page ) {
$links = [
[
'loc' => 'http://www.example.com/',
'mod' => '2023-10-08',
],
[
'loc' => 'http://www.example.com/page-2/',
'mod' => '2023-10-08',
],
];
return $links;
}
}
2 Add Custom Links in get_sitemap_links()
Function
Replace the example.com
URLs and add your custom links in the get_sitemap_links()
function.
3 Add the Code Snippet in Child’s rank-math.php
Add the below filter code in the rank-math.php of your child theme:
include_once 'custom-sitemap.php';
add_filter('rank_math/sitemap/providers', function( $external_providers ) {
$external_providers['custom'] = new \RankMath\Sitemap\Providers\Custom();
return $external_providers;
});
Once done, the new sitemap will show up with your custom links in it. Sitemaps also have enormous benefits and play a major role in boosting your rankings.
How to Include Images in the Custom Sitemap
To add images in the custom sitemap, please pass the array of the image objects in the get_sitemap_links function:
<?php
namespace RankMath\Sitemap\Providers;
defined( 'ABSPATH' ) || exit;
class Custom implements Provider {
public function handles_type( $type ) {
return 'custom' === $type;
}
public function get_index_links( $max_entries ) {
return [
[
'loc' => \RankMath\Sitemap\Router::get_base_url( 'custom-sitemap.xml' ),
'lastmod' => '',
]
];
}
public function get_sitemap_links( $type, $max_entries, $current_page ) {
$links = [
[
'loc' => 'http://www.example.com/',
'mod' => '2023-10-08',
'images' => [
[
'src' => 'http://www.example.com/image1.png',
'title' => 'Image Title',
],
[
'src' => 'http://www.example.com/image2.png',
'title' => 'Image 2 Title',
],
],
],
[
'loc' => 'http://www.example.com/page-2/',
'mod' => '2023-10-08',
],
];
return $links;
}
}
To clear the custom sitemap cache, you’ll have to execute the \RankMath\Sitemap\Cache::invalidate_storage( 'custom' );
 on save_post
 hook. If you’re not sure how to do it, we would recommend you disable the sitemap cache completely by adding the following one line to your theme’s rank-math.php file:
add_filter( 'rank_math/sitemap/enable_caching', '__return_false');
If you still have any questions about creating a custom Sitemap and including it in Rank Math, please feel free to contact our support team – we’re always more than happy to help.