# Совместимость с другими плагинами

## ✅ Совместимость с плагином "Генератор XML-карты сайта для WordPress"

Плагин **ContentZavod v1.2.0** полностью совместим с плагином **"Генератор XML-карты сайта для WordPress" (версия 4.1.21 от Auctollo)** и другими плагинами для создания sitemap.

### Как это работает

1. **Разные URL для sitemap:**
   - Плагин XML Sitemap создаёт: `sitemap.xml`
   - ContentZavod создаёт: `contentzavod-sitemap.xml`
   - Они **НЕ конфликтуют**, так как это разные файлы

2. **Приоритеты загрузки:**
   - ContentZavod загружается с приоритетом `20` (после большинства плагинов)
   - Правила перезаписи добавляются с приоритетом `99` (в конце очереди)
   - Это гарантирует, что другие плагины отработают первыми

3. **Изолированные правила перезаписи:**
   - ContentZavod обрабатывает **только** URL с префиксом `/contentzavod/`
   - ContentZavod обрабатывает **только** `/contentzavod-sitemap.xml`
   - Все остальные URL остаются доступными для других плагинов

### Структура sitemap на вашем сайте

После установки обоих плагинов у вас будет:

```
https://lifeexpert.top/sitemap.xml              ← Основной sitemap (XML Sitemap плагин)
https://lifeexpert.top/contentzavod-sitemap.xml ← Дополнительный sitemap (ContentZavod)
```

### Настройка robots.txt

В файле `robots.txt` должны быть **оба** sitemap:

```
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://lifeexpert.top/sitemap.xml
Sitemap: https://lifeexpert.top/sitemap.html
Sitemap: https://lifeexpert.top/contentzavod-sitemap.xml
```

## 🔧 Технические детали

### Приоритеты хуков

```php
// Загрузка плагина
add_action('plugins_loaded', 'contentzavod_proxy_init', 20);

// Внутри класса
add_action('init', array($this, 'add_rewrite_rules'), 99);
add_action('template_redirect', array($this, 'handle_proxy_request'), 5);
add_filter('query_vars', array($this, 'add_query_vars'), 99);
```

**Что это значит:**

- `plugins_loaded` с приоритетом `20` - плагин загружается после стандартных плагинов (приоритет 10)
- `init` с приоритетом `99` - правила перезаписи добавляются в конце
- `template_redirect` с приоритетом `5` - обработка запросов происходит рано, но только для наших URL

### Защита от конфликтов

Плагин имеет несколько уровней защиты:

1. **Проверка переменных запроса:**

   ```php
   if (empty($path)) {
       return; // Не наш запрос - пропускаем
   }
   ```

2. **Проверка REQUEST_URI:**

   ```php
   if (strpos($request_uri, '/contentzavod/') !== 0 && 
       strpos($request_uri, '/contentzavod-sitemap.xml') !== 0) {
       return; // Не наш URL - пропускаем
   }
   ```

3. **Специфичные правила перезаписи:**

   ```php
   // Только contentzavod-sitemap.xml
   '^contentzavod-sitemap\.xml$'
   
   // Только пути начинающиеся с contentzavod/
   '^contentzavod/(.+)/?$'
   ```

## 🔄 Порядок обработки запросов

### Запрос к /sitemap.xml

1. WordPress получает запрос
2. Плагин XML Sitemap обрабатывает (приоритет ниже)
3. ContentZavod проверяет - это не наш URL
4. ContentZavod пропускает запрос
5. XML Sitemap возвращает результат

### Запрос к /contentzavod-sitemap.xml

1. WordPress получает запрос
2. ContentZavod проверяет - это наш URL
3. ContentZavod обрабатывает и возвращает результат
4. Другие плагины не задействованы

### Запрос к /contentzavod/view/article

1. WordPress получает запрос
2. ContentZavod проверяет - это наш URL
3. ContentZavod проксирует на fittin.ru
4. ContentZavod возвращает результат
5. Другие плагины не задействованы

## ✅ Проверка совместимости

### Шаг 1: Проверьте основной sitemap

```
https://lifeexpert.top/sitemap.xml
```

Должен работать как обычно (создан плагином XML Sitemap).

### Шаг 2: Проверьте sitemap ContentZavod

```
https://lifeexpert.top/contentzavod-sitemap.xml
```

Должен показывать sitemap с URL contentzavod.

### Шаг 3: Проверьте страницы contentzavod

```
https://lifeexpert.top/contentzavod/view/article
```

Должны проксироваться с fittin.ru.

### Шаг 4: Проверьте другие страницы

```
https://lifeexpert.top/any-other-page
```

Должны работать как обычно (не затронуты плагином).

## 🔍 Отладка конфликтов

Если возникают проблемы:

### 1. Проверьте порядок загрузки плагинов

В WordPress плагины загружаются в алфавитном порядке по имени папки:

```
/wp-content/plugins/
  ├── contentzavod-proxy/          ← Загружается первым (C)
  └── google-sitemap-generator/    ← Загружается вторым (G)
```

Но благодаря приоритету `20` в `plugins_loaded`, ContentZavod инициализируется позже.

### 2. Проверьте правила перезаписи

Выполните в WordPress:

```php
global $wp_rewrite;
print_r($wp_rewrite->rules);
```

Должны быть правила для:

- `contentzavod-sitemap.xml`
- `contentzavod/(.+)`

### 3. Обновите постоянные ссылки

После установки или обновления плагина:

1. **Настройки → Постоянные ссылки**
2. Нажмите **Сохранить изменения**

Это пересоздаст все правила перезаписи.

### 4. Очистите кэш

Если используете плагины кэширования:

- WP Super Cache
- W3 Total Cache
- LiteSpeed Cache

Очистите кэш после обновления плагина.

## 📊 Тестирование совместимости

### Тест 1: Оба плагина активны

1. Активируйте "Генератор XML-карты сайта для WordPress"
2. Активируйте "ContentZavod"
3. Обновите постоянные ссылки
4. Проверьте оба sitemap

**Ожидаемый результат:** Оба sitemap работают независимо.

### Тест 2: Порядок активации

1. Деактивируйте оба плагина
2. Активируйте сначала ContentZavod
3. Затем активируйте XML Sitemap
4. Проверьте работу

**Ожидаемый результат:** Всё работает корректно.

### Тест 3: Обратный порядок

1. Деактивируйте оба плагина
2. Активируйте сначала XML Sitemap
3. Затем активируйте ContentZavod
4. Проверьте работу

**Ожидаемый результат:** Всё работает корректно.

## 🛡️ Гарантии совместимости

ContentZavod гарантирует совместимость с:

- ✅ Генератор XML-карты сайта для WordPress (Auctollo)
- ✅ Yoast SEO
- ✅ All in One SEO Pack
- ✅ Rank Math SEO
- ✅ Google XML Sitemaps
- ✅ WP Super Cache
- ✅ W3 Total Cache
- ✅ LiteSpeed Cache

## 🆘 Если всё равно есть конфликт

### Симптомы конфликта

- Один из sitemap не работает (404)
- Страницы contentzavod не открываются
- Основной sitemap показывает неправильные данные

### Решение

1. **Деактивируйте оба плагина**
2. **Очистите кэш** (браузер + WordPress)
3. **Активируйте XML Sitemap** первым
4. **Проверьте** что sitemap.xml работает
5. **Активируйте ContentZavod**
6. **Обновите постоянные ссылки** (обязательно!)
7. **Проверьте** оба sitemap

### Если проблема сохраняется

Включите режим отладки WordPress (`wp-config.php`):

```php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
```

Проверьте логи в `/wp-content/debug.log` для выявления ошибок.

## 📝 Заключение

Плагин **ContentZavod v1.2.0** разработан с учётом совместимости и **не конфликтует** с другими плагинами благодаря:

1. Использованию уникальных URL (`contentzavod-sitemap.xml`)
2. Правильным приоритетам загрузки
3. Изолированным правилам перезаписи
4. Множественным проверкам перед обработкой запросов

Оба плагина работают **независимо** и **дополняют** друг друга, а не конфликтуют.

---

**Версия:** 1.2.0  
**Дата:** 2025-10-24

