serii81
@serii81
Я люблю phр...

Как добавить динамиически страницы в sitemap wp?

Добрый день.
Я использую плагин rank math для seo.

На сайте выводятся посты, которые создаются динамически.
Я создал страницу ads, и через api получаю контент поста.
Пример через fetch.
fetch('https://my.site/api/realestate/v1/immobili/<?php echo $_GET['id']; ?>');


И вывожу контент на странице.

Теперь, как мне добавить эти страницы в карту сайта?
Я же могу получить все id записей и в цикле создать url.

Только не понимаю как в sitemap для rankmath прописать.

Заранее благодарен.
  • Вопрос задан
  • 28 просмотров
Решения вопроса 1
serii81
@serii81 Автор вопроса
Я люблю phр...
Нашел решение.

add_action("init", "eg_create_sitemap");

$sitemap_path = ABSPATH . "sitemap.xml";
$pages_path = ABSPATH . "pages.xml";
$ads_path = ABSPATH . "ads-list.xml";

if (file_exists($sitemap_path)) {
	unlink($sitemap_path);
}
if (file_exists($pages_path)) {
	unlink($pages_path);
}
if (file_exists($ads_path)) {
	unlink($ads_path);
}

function createUrlXml() {
	$url_sitemap = '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
	$url_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
	$url_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/ads-list.xml</loc>' . "\n\t\t" . '<lastmod>2021-09-30T01:10:02.000000Z</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '
    </url>' . "\n";
	$url_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/pages.xml</loc>' . "\n\t\t" . '
        <lastmod>2021-09-30T01:10:02.000000Z</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '
    </url>' . "\n";
	$url_sitemap .= '</urlset>';
	return $url_sitemap;
}

function createPagesSitemap() {
	$postsForSitemap = get_posts(array('numberposts' => -1, 'orderby' => 'modified', 'post_type' => array('post', 'page'), 'order' => 'DESC'));
	$pages_sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
	$pages_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);
		$pages_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";
	}
	$pages_sitemap .= '</urlset>';
	return $pages_sitemap;
}

function createAdsSitemap() {
	$adsForSitemap = getPropertiesId();
	$adsForSitemap = json_decode($adsForSitemap)->data;
	$ads_sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
	$ads_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
	foreach ($adsForSitemap as $item) {
		$ads_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/ads?id=' . $item->id . '</loc>' . "\n\t\t" . '<lastmod>' . $item->updated_at . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n";
	}
	$ads_sitemap .= '</urlset>';
	return $ads_sitemap;
}

function eg_create_sitemap() {
	$url_sitemap = createUrlXml();
	$pages_sitemap = createPagesSitemap();
	$ads_sitemap = createAdsSitemap();

	global $sitemap_path;
	global $pages_path;
	global $ads_path;

	$fp = fopen($sitemap_path, 'w');
	fwrite($fp, $url_sitemap);
	fclose($fp);

	$fp = fopen($pages_path, 'w');
	fwrite($fp, $pages_sitemap);
	fclose($fp);

	$fp = fopen($ads_path, 'w');
	fwrite($fp, $ads_sitemap);
	fclose($fp);
}


$adsForSitemap - получаю данные из api.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы