About sitemap xml generation
-
Dear support,
I am trying to put rank-math.php file into my child theme but it does not generate page-bn-sitemap.xml and page-en-sitemap.xml. it always show page-sitemap.xml. I have two languages in this website and powered by Polylang. One Language is Bangla and another one is English and Bangla is the default language.
The code is here:
<?php
/**
* Rank Math + Polylang Multilingual Sitemap Fix
*/
defined( 'ABSPATH' ) || exit;
/**
* Force load early
*/
add_action( 'init', 'rmppl_register_multilang_sitemaps', 5 );
function rmppl_register_multilang_sitemaps() {
if ( ! function_exists( 'pll_languages_list' ) ) {
return;
}
$languages = pll_languages_list();
if ( empty( $languages ) ) {
return;
}
// Register per-language post/page sitemaps
add_filter( 'rank_math/sitemap/post_types', function( $post_types ) use ( $languages ) {
foreach ( $languages as $lang ) {
$post_types["post-{$lang}"] = [
'name' => "post-{$lang}",
'object_type' => ['post'],
'query_var' => [
'post_type' => 'post',
'lang' => $lang,
],
];
$post_types["page-{$lang}"] = [
'name' => "page-{$lang}",
'object_type' => ['page'],
'query_var' => [
'post_type' => 'page',
'lang' => $lang,
],
];
}
return $post_types;
});
}
/**
* Correct URLs inside RankMath sitemap entries
*/
add_filter( 'rank_math/sitemap/entry', function( $url, $post ) {
if ( function_exists( 'pll_get_post_language' ) ) {
$lang = pll_get_post_language( $post->ID );
if ( $lang ) {
$lang_home = pll_home_url( $lang );
$url = $lang_home . str_replace( home_url( '/' ), '', $url );
}
}
return $url;
}, 10, 2);
How to fix it?
Thanks
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
You must be logged in to reply to this topic.