ACF - программно установить значение поля файла, которое находится внутри поля повторителя - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь выяснить, как программно установить значение поля файла, вложенного в поле повторителя.

У меня есть поле повторителя под названием «документы», и я заполняю его данными из API через код ниже:

// Process Documents
$documents = $report_item->Documents;
$formatted_documents = array();
foreach ($documents as $doc) {
    $file_name = str_replace("/", "-", trim(str_replace(" ", "-", $report_item->ReportTitle)) . "--" . trim(str_replace(" ", "-", $doc->DocumentTitle)) . ".pdf");
    $file_data = q4_upload_file($file_name, $doc->DocumentPath, $post_id);

    array_push($formatted_documents, array(
        "document_category"   => $doc->DocumentCategory,
        "document_file_size"   => $doc->DocumentFileSize,
        "document_file_type"   => $doc->DocumentFileType,
        "document_id"   => $doc->DocumentId,
        "document_order"   => $doc->DocumentOrder,
        "document_path"   => $doc->DocumentPath,
        "document_title"   => $doc->DocumentTitle,
        "document_type"   => $doc->DocumentType,
        "language_id"   => $doc->LanguageId,
        "report_workflow_id"   => $doc->ReportWorkflowId,
        "revision_number"   => $doc->RevisionNumber,
        "thumbnail_path"   => $doc->ThumbnailPath,
        "workflow_id"   => $doc->WorkflowId,
        "file" => $file_data
    ));
}
update_field( 'documents', $formatted_documents, $post_id );

Теперь все данные сохраняются правильно, кроме файла.

В настоящее время у меня есть настраиваемое поле файла для использования массива в качестве возвращаемого значения и это массив, который я пытаюсь сохранить для его значения.

return array(
    'pid' =>$post_id,
    'url' => $upload_url . "q4-reports/" . $file_name,
    'file'=>$file,
    'attach_id'=>$attachment_id,
    'filename' => $file_name
);

К сожалению, это не работает. Я также попытался сделать так, чтобы возвращаемое поле имело значение 'url', а переменная $ file_data в первом фрагменте кода была URL-адресом файла в папке wp-contents / uploads /, но это тоже не сработало.

...