php my_media_handle_upload()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php my_media_handle_upload()相关的知识,希望对你有一定的参考价值。

add_action( 'wpcf7_mail_sent', 'hookToProcessFormData', $priority = 10, $accepted_args = 1 );
 
function hookToProcessFormData($contact_form) {
  // передаваемый объект $contant_form позволит определить 
  // та ли эта форма, которая требует обработки
  if ($contact_form->id() == 100) {
 
    // Позаботимся о картинке
    // Получим объект Submission, 
    // откуда можно извлечь информацию о новом имени загруженного файла
    $SBM = WPCF7_Submission::get_instance();
    $uploaded = $SBM->uploaded_files();
    // теперь по имени поля извлечем адрес и загрузим файл 
    // в медиа библиотеку WP
    if (!empty($uploaded['partner-card'])) {
      $picture_id = my_media_handle_upload($uploaded['partner-card'], false);
    } else {
      $picture_id = 0;
		}
		update_field('qwert', $picture_id, 'option');
  }
}

/* загрузка картинки по заданному URL or path */
function my_media_handle_upload(
  $file_url, 
  $post_id, 
  $post_data = array(), 
  $overrides = array( 'test_form' => false )) {
 
  $time = current_time('mysql');
  if ( $post = get_post($post_id) ) {
  if ( substr( $post->post_date, 0, 4 ) > 0 )
    $time = $post->post_date;
  }
 
  //получение файла и создание его временной копии
  $file = file_get_contents($file_url);
  if (!empty($file)) {
    $tmpfname = tempnam(sys_get_temp_dir(), 'EX_');
    $temp = fopen($tmpfname, "wb");
    fwrite($temp, $file);
    fclose($temp);
 
    //имитируем загрузку временного файла
    $file_id = 'myfile';
    $_FILES[$file_id] = array(
      'name' => basename($file_url),
      'type' => mime_content_type($tmpfname),
      'size' => filesize($tmpfname),
      'tmp_name' => $tmpfname,
    );
  } else {
    return 0;
  }
 
  require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-admin/includes/file.php';
  require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-admin/includes/image.php';
 
  $name = $_FILES[$file_id]['name'];
  $file = _wp_handle_upload($_FILES[$file_id], $overrides, $time, 'user-export');
 
  if ( isset($file['error']) ) {
    return new WP_Error( 'upload_error', $file['error'] );
  }
 
  $name_parts = pathinfo($name);
  $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) );
 
  $url = $file['url'];
  $type = $file['type'];
  $file = $file['file'];
  $title = $name;
  $content = '';
  $excerpt = '';
 
  if ( 0 === strpos( $type, 'image/' ) && $image_meta = @wp_read_image_metadata( $file ) ) {
    if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {
      $title = $image_meta['title'];
    }
 
    if ( trim( $image_meta['caption'] ) ) {
      $excerpt = $image_meta['caption'];
    }
  }
 
  // Construct the attachment array
  $attachment = array_merge( array(
    'post_mime_type' => $type,
    'guid' => $url,
    'post_parent' => $post_id,
    'post_title' => $title,
    'post_content' => $content,
    'post_excerpt' => $excerpt,
  ), $post_data );
 
  // This should never be set as it would then overwrite an existing attachment.
  unset( $attachment['ID'] );
 
  // Save the data
  // $id = wp_insert_attachment($attachment, $file, $post_id);
  // if ( !is_wp_error($id) ) {
  //   wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
	// }
	
  return $url;
}

以上是关于php my_media_handle_upload()的主要内容,如果未能解决你的问题,请参考以下文章

php send.php php邮件模板#php

IntelliJ IDEA 11编辑php是,支持php文件名为.php5和.php4,如何设置能让其也支持.php呢?

如何从php5升级到php7

请问php中如何调用php文件中的内容?

php [php:PHPMailer示例] php库“PHPMailer”示例。 #PHP

php基础