Автозамена переменных в виртуальном robots.txt
Если вы управляете большим количеством сайтов, или по любым другим причинам, иногда вам хочется изменять содержимое файла robots.txt динамически. В первой статье я описал, как редактировать robots.txt из админки. А теперь покажу, как автозаменять там переменные.
На самом деле, всё предельно просто. Посмотрите:
Там внизу есть строки
1 2 |
Sitemap: {siteurl}/sitemap_index.xml Host: {siteurl} |
А в реальном файле они заменяются на
1 2 |
Sitemap: https://dima.stefantsov.com/sitemap_index.xml Host: https://dima.stefantsov.com |
Как это сделать? Простым кодом.
1 2 3 4 5 6 7 8 |
// Dynamic robots.txt replacements. add_filter('robots_txt', function($text, $is_public) { if (strpos($text, '{siteurl}') !== false) { $text = str_replace('{siteurl}', site_url(), $text); } return $text; }, 999, 2); |
Проверку if()
делать не обязательно, но раз в результате замены вызывается предположительно медленная функция, с этой проверкой код будет работать быстрее.
Просто берём и заменяем придуманный нами токен {siteurl}
на реальный урл сайта.
Подобным же образом вы можете реализовать в своём роботс.тхт любую автозамену.
Или например, вот условное включение и отключение ссылки на сайтмап:
1 2 3 4 5 6 7 8 9 |
function yoast_seo_sitemap_to_robotstxt($output) { $options = get_option('wpseo_xml'); if (class_exists('WPSEO_Sitemaps') && $options['enablexmlsitemap'] == true) { $homeURL = get_home_url(); $output .= "Sitemap: $homeURL/sitemap_index.xml\n"; } return $output; } add_filter('robots_txt', 'yoast_seo_sitemap_to_robotstxt', 9999, 1); |
Обсуждение