WORDPRESS
#wordpress#json-ld#custom-post-type#debug#diagnostics#wp_head

WordPress: диагностика JSON-LD для Custom Post Type

Чеклист и код для отладки: проверка регистрации CPT (post_type_exists), факт вызова hook (error_log), права доступа и кэш. По официальной документации WordPress.

Как использовать

  1. Проверьте, что CPT зарегистрирован: post_type_exists('your_cpt') в коде или через WP-CLI.
  2. Временно добавьте error_log в функцию вывода JSON-LD и смотрите debug.log.
  3. Убедитесь, что 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 — дубли и ошибки.