Мне повезёт!Главная > Импорт > wordpress-site.ru > Автозамена переменных в виртуальном robots.txt

Автозамена переменных в виртуальном robots.txt

Если вы управляете большим количеством сайтов, или по любым другим причинам, иногда вам хочется изменять содержимое файла robots.txt динамически. В первой статье я описал, как редактировать robots.txt из админки. А теперь покажу, как автозаменять там переменные.

На самом деле, всё предельно просто. Посмотрите:

Настройки robots.txt в Настройки – Чтение

Там внизу есть строки

Sitemap: {siteurl}/sitemap_index.xml
Host: {siteurl}

А в реальном файле они заменяются на

Sitemap: https://dima.stefantsov.com/sitemap_index.xml
Host: https://dima.stefantsov.com

 

Как это сделать? Простым кодом.

// 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} на реальный урл сайта.

Подобным же образом вы можете реализовать в своём роботс.тхт любую автозамену.

 

Или например, вот условное включение и отключение ссылки на сайтмап:

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);

 

 

Оригинальный адрес публикации: https://wordpress-site.ru/kod/avtozamena-peremennyh-v-virtualnom-robots-txt/

Обсуждение

avatar

wpDiscuz