Добрый день.
Я на сайте получаю посты с другого сайта и нужно добавить их в sitemap.
Чтобы отображать эти посты, я создал страницу ads, и в качестве get параметра получаю id поста и уже вывожу на страницу.
https://immobiliareclass.com/ads/?id=546815
Для создания sitemap я нашел такой скрипт.
add_action("save_post", "eg_create_sitemap");
function eg_create_sitemap()
{
$postsForSitemap = get_posts(array(
'numberposts' => -1,
'orderby' => 'modified',
'post_type' => array('post', 'page'),
'order' => 'DESC'
));
$adsForSitemap = getPropertiesId();
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($postsForSitemap as $post) {
setup_postdata($post);
$postdate = explode(" ", $post->post_modified);
$sitemap .= "\t" . '<url>' . "\n" .
"\t\t" . '<loc>' . get_permalink($post->ID) . '</loc>' .
"\n\t\t" . '<lastmod>' . $postdate[0] . '</lastmod>' .
"\n\t\t" . '<changefreq>monthly</changefreq>' .
"\n\t" . '</url>' . "\n";
}
foreach ($adsForSitemap as $item) {
setup_postdata($post);
$sitemap .= "\t" . '<url>' . "\n" .
"\t\t" . '<loc>https://immobiliareclass.com/ads?id=' . $item->id . '</loc>' .
"\n\t\t" . '<lastmod>' . $item->updated_at . '</lastmod>' .
"\n\t\t" . '<changefreq>monthly</changefreq>' .
"\n\t" . '</url>' . "\n";
}
$sitemap .= '</urlset>';
$fp = fopen(ABSPATH . "sitemap.xml", 'w');
fwrite($fp, $sitemap);
fclose($fp);
}
Я пробовал этот скрипт на другом сайте и там он работает. А на этом есть проблема с wp-sitemap.xml.
Если я браузере пишу url/sitemap.xml то идет переадресация на url/wp-sitemap.xml
https://immobiliareclass.com/robots.txt
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://immobiliareclass.com/sitemap.xml
Я нашел скрипт, который отключает wp-sitemap
add_filter('wp_sitemaps_enabled', '__return_false');
Только этот фильтр отключает не только wp-sitemap но и sitemap.xml
Заранее благодарен за ответ.