ACF: поля повторителя, возвращающие ошибочные данные API, а новые поля не будут принимать новые данные при сохранении - PullRequest
0 голосов
/ 29 августа 2018

Сайт, над которым мы работаем, сломался на прошлой неделе, и мы понятия не имеем, что происходит. Вот список проблем и шаги, которые мы предприняли для их устранения:

  • В нашем вызове API мы используем get_field () и get_fields () для запроса данных от ретранслятора, но время от времени это возвращает нуль, ложь или длину массива. Весь контент все еще находится в базе данных.
  • При попытке создания нового содержимого повторителя дочерние поля родительского поля повторителя не сохраняются при первом сохранении, но после повторного добавления могут быть сохранены впоследствии.
  • При создании новых полей (любое поле, а не только повторитель) ключ изменится с формата field_xxxxxxxxxxxxxx на тот же, что и имя, то есть краткое описание.
  • Старые поля повторителя могут быть обновлены или сохранены, в то время как новые поля не сохранят данные.

Действия по устранению неполадок

Заранее благодарим за любые рекомендации, которые вы можете предоставить:)

1 Ответ

0 голосов
/ 30 августа 2018

Оказалось, что этот кусок кода в functions.php, который мы использовали для перезаписи слагов при сохранении постов, был проблемой:

function myplugin_update_slug( $data, $postarr ) {
    if ( ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
        $data['post_name'] = sanitize_title( $data['post_title'] );
    }
    return $data;
}

Функция sanitize_title () перезаписывала ключевое поле и заставляла ACF терять поля.

Мы решили эту проблему, активировав чистую тему WP, а затем, подтвердив, что это был какой-то код в нашей дочерней теме, мы просто закомментировали код в нашем файле functions.php, пока не была найдена нарушающая функция.

...