WordPress: диагностика JSON-LD для Custom Post Type
Чеклист и код для отладки: проверка регистрации CPT (post_type_exists), факт вызова hook (error_log), права доступа и кэш. По официальной документации WordPress.
Как использовать
- Проверьте, что CPT зарегистрирован: post_type_exists('your_cpt') в коде или через WP-CLI.
- Временно добавьте error_log в функцию вывода JSON-LD и смотрите debug.log.
- Убедитесь, что CPT public, отключите кэш на время теста.
Если JSON-LD не появляется на странице CPT или выводится с ошибками, поочерёдно проверьте регистрацию типа, вызов hook и окружение. Используются post_type_exists() и WP_DEBUG по официальной документации WordPress.
1. CPT зарегистрирован
post_type_exists('articles') // должно вернуть true
Проверку можно выполнить временно в functions.php (вывести результат в debug.log) или через WP-CLI: wp post-type list.
2. Hook вызывается
В начало функции, которая выводит JSON-LD (например output_jsonld или custom_cpt_jsonld_output), временно добавьте:
error_log('JSONLD: output called');
Включите логирование: в wp-config.php задайте define('WP_DEBUG', true); и при необходимости define('WP_DEBUG_LOG', true);. Смотрите wp-content/debug.log. Если запись не появляется при открытии single CPT — hook не срабатывает или условие is_singular() не выполняется.
3. Права и видимость
- CPT должен быть с
'public' => true, иначе страница может быть недоступна или не считаться singular. - Проверьте без авторизации: откройте URL single-записи в режиме инкогнито.
4. Кэш
- Очистите объектный кэш WordPress (Redis/Memcached), если используется.
- Временно отключите кэш-плагины и CDN, затем перезагрузите страницу.
5. Логи PHP
tail -f /var/log/php/error.log
Или путь к логу вашего хостинга (на BitrixVM и др. путь может отличаться). Убедитесь, что в лог пишется ваш error_log('JSONLD: output called');.
Подробнее: WordPress: JSON-LD для CPT — дубли и ошибки.