Быстрый генератор sitemap.xml с помощью ChatGPT. Создание плагина без лишних наворотов за 5 минут, работающего на все 100%!
Я: Привет! Помоги создать плагин wordpress для автогенерации sitemap.xml по всем стандартам поисковых систем. Сможешь?
ChatGPT: Привет! Конечно, я помогу тебе создать плагин для WordPress, который будет автоматически генерировать файл sitemap.xml по всем стандартам поисковых систем. Давайте начнем.
Создание плагина WordPress включает несколько шагов:
Создание структуры плагина
Написание основного файла плагина
Генерация sitemap.xml
Обработка событий добавления, обновления и удаления контента
Обработка запросов к sitemap.xml
Создание структуры плагина
Для начала создадим структуру папок и файлов для нашего плагина:
wp-content/
└── plugins/
└── my-sitemap-plugin/
├── my-sitemap-plugin.php
├── includes/
│ └── sitemap-generator.php
Написание основного файла плагина
Файл my-sitemap-plugin.php является основным файлом плагина. В нем мы регистрируем наш плагин и подключаем необходимые файлы.
<?php
/*
Plugin Name: My Sitemap Plugin
Description: Плагин для автоматической генерации sitemap.xml.
Version: 1.0
Author: Ваше Имя
*/
// Определяем константы
define('MY_SITEMAP_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('MY_SITEMAP_PLUGIN_URL', plugin_dir_url(__FILE__));
// Подключаем файл генератора sitemap
require_once MY_SITEMAP_PLUGIN_DIR . 'includes/sitemap-generator.php';
// Регистрируем активацию плагина
register_activation_hook(__FILE__, 'my_sitemap_plugin_activate');
function my_sitemap_plugin_activate() {
my_generate_sitemap();
}
// Регистрируем деактивацию плагина
register_deactivation_hook(__FILE__, 'my_sitemap_plugin_deactivate');
function my_sitemap_plugin_deactivate() {
my_delete_sitemap();
}
// Добавляем действия для генерации sitemap при изменении контента
add_action('save_post', 'my_generate_sitemap');
add_action('deleted_post', 'my_generate_sitemap');
add_action('trashed_post', 'my_generate_sitemap');
// Обрабатываем запросы к sitemap.xml
add_action('init', 'my_sitemap_rewrite_rule');
function my_sitemap_rewrite_rule() {
add_rewrite_rule('^sitemap\.xml$', 'index.php?sitemap=1', 'top');
}
add_filter('query_vars', 'my_sitemap_query_var');
function my_sitemap_query_var($vars) {
$vars[] = 'sitemap';
return $vars;
}
add_action('template_redirect', 'my_sitemap_template');
function my_sitemap_template() {
if (get_query_var('sitemap')) {
my_generate_sitemap();
exit;
}
}
Генерация sitemap.xml
Теперь создадим файл includes/sitemap-generator.php, который будет содержать функции для генерации и удаления sitemap.xml.
<?php
function my_generate_sitemap() {
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => array('post', 'page'), // Здесь добавляем или удаляем нужные типы постов для включения в sitemap
'post_status' => 'publish',
));
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"></urlset>');
foreach ($posts as $post) {
$url = $xml->addChild('url');
$url->addChild('loc', get_permalink($post));
$url->addChild('lastmod', get_the_modified_time('c', $post));
$url->addChild('changefreq', 'monthly'); // Здесь настраиваем частоту обновления
$url->addChild('priority', '0.8'); // Здесь настраиваем приоритет (у меня стоит этот 0.8)
}
$xml->asXML(ABSPATH . 'sitemap.xml');
}
function my_delete_sitemap() {
$sitemap = ABSPATH . 'sitemap.xml';
if (file_exists($sitemap)) {
unlink($sitemap);
}
}
Обработка событий добавления, обновления и удаления контента
Функции my_generate_sitemap и my_delete_sitemap уже подключены к соответствующим событиям в основном файле плагина. Эти функции будут вызываться при добавлении, обновлении и удалении постов или страниц.
Обработка запросов к sitemap.xml
В основном файле плагина мы добавили правила перезаписи URL и обработку запросов. Когда кто-то обращается к sitemap.xml, срабатывает функция my_sitemap_template, которая вызывает генерацию sitemap.xml и завершает выполнение скрипта.
Заключение
Теперь у нас есть полностью функциональный плагин для автоматической генерации sitemap.xml в WordPress. Этот плагин будет следить за изменениями контента и автоматически обновлять sitemap.xml, чтобы он всегда соответствовал текущему состоянию сайта.
Я! Спасибо, все работает!
ChatGPT: Отлично! Рад, что все работает. Если у тебя возникнут еще вопросы или потребуется помощь с другими проектами, не стесняйся обращаться. Удачи в разработке!
P. S Результат: https://vse-mikrozaymy.ru/sitemap.xml (не реклама). Чтобы посмотреть как ее видят поисковики нажмите Ctrl + U. Короче ничего лишнего.
Кому надо пользуйтесь на здоровье!



