Заполните поле «Галерея ACF» изображениями, используя хук load_value - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь заполнить поле галереи ACF, используя хук load_value. Слайды изображений должны быть загружены из данных, которые хранятся в виде массивов, взятых из другого плагина (королевский слайдер).

Пример одного массива слайдеров:

[{"title":"Argentina-Holiday-Tours-Alvear-Palace-Interior-Suite-Executive-Governor-Suite","image":{"attachment_id":"1653"}},{"title":"Argentina-Holiday-Tours-Alvear-Palace-Interior-Suite","image":{"attachment_id":"1652"}},{"title":"Argentina-Holiday-Tours-Alvear-Palace-Interior-Room","image":{"attachment_id":"1651"}},{"title":"Argentina-Holiday-Tours-Alvear-Palace-Interior-Restaurant","image":{"attachment_id":"1650"}},{"title":"Argentina-Holiday-Tours-Alvear-Palace-Interior-Lounge","image":{"attachment_id":"1649"}},{"title":"Argentina-Holiday-Tours-Alvear-Palace-Interior-Buffet","image":{"attachment_id":"1648"}}]

У каждого королевского слайдера есть свой собственный идентификатор, и каждый идентификатор уже привязан к сообщениям, используя поле выбора ACF. У меня проблема с переносом ассоциативного массива в галерею ACF. Это то, что я имею до сих пор:

add_filter('acf/load_value/key=field_5e2058d65e519', 'build_gallery_from_rs', 10, 3);

function build_gallery_from_rs($value, $post_id, $field) {
  if (!empty($value)) {
    // already has a value
    return;
  }
  // does not have a value, build value from slider attachments
  global $wpdb;
  $table = $wpdb->prefix . 'new_royalsliders';
  $id = get_field('media_gallery_slider');
  $slider_data = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $table WHERE id=%d", $id), ARRAY_A );
  // How to build image array?
  $media = $slider_data[0];
  $value = array();
  if ($media) {
    foreach ($media as $image) {
      $value[] = $image->ID;
    }
  }
  return $value;
}

Любая помощь будет отличной

...