WORDPRESS
#wordpress#acf#save_post#debug#mu-plugin#meta

ACF: MU-plugin для отладки acf/save_post (логирование ключей)

Логирует post_id и ключи из $_POST['acf'] при сохранении поста. Для диагностики: приходит ли форма с данными ACF в хук. По документации ACF acf/save_post.

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

  1. Создайте файл wp-content/mu-plugins/acf-save-debug.php (папку mu-plugins создайте при необходимости).
  2. Включите WP_DEBUG_LOG в wp-config.php, сохраните пост с ACF-полем и смотрите wp-content/debug.log.

Му-плагин вешает обработчик на acf/save_post с приоритетом 1 и пишет в error_log идентификатор поста и список ключей из $_POST['acf'] (с ACF 5.x данные приходят в $_POST['acf']). Если ключи пустые — форма не передаёт данные ACF; если ключи есть, а meta не сохраняется — конфликт хуков или перезапись ниже по цепочке.

Код

<?php
/**
 * Plugin Name: ACF Save Debug (MU)
 * Description: Логирует post_id и ключи $_POST['acf'] в acf/save_post.
 */

add_action('acf/save_post', function ($post_id) {
    if (!is_admin()) {
        return;
    }

    $keys = isset($_POST['acf']) && is_array($_POST['acf'])
        ? array_keys($_POST['acf'])
        : [];

    error_log(
        '[ACF] acf/save_post post_id=' . $post_id . ' keys=' . implode(',', $keys)
    );
}, 1);

Что смотреть в логе

  • После сохранения поста в админке в wp-content/debug.log должна появиться строка вида [ACF] acf/save_post post_id=123 keys=field_abc,field_def.
  • Пустой keys — ACF не получает данные (не тот экран, кастомная форма без acf_form_head(), поле disabled или конфликт JS).
  • Ключи есть, но meta в БД не меняется — ищите другой код на save_post или acf/save_post, который перезаписывает meta.

Подробнее: WordPress: ACF поле не сохраняется — чиним запись meta.