Mendapatkan Jalur Ke Gambar Lampiran yang Diunggah Setelah Diunggah

8

Setelah Anda mengunggah lampiran di Wordpress menggunakan layar unggah media, apakah ada kait atau filter yang bisa saya jalankan setelah gambar diunggah di mana saya bisa mendapatkan jalur ke gambar yang diunggah sehingga saya bisa menganalisisnya?

Saya sedang membangun sebuah plugin yang akan menganalisis gambar setelah diunggah dan kemudian menandai gambar dengan warna rata-rata yang ditemukan dalam gambar. Satu-satunya masalah adalah saya tidak tahu hook apa yang bisa saya gunakan yang akan langsung menyala setelah gambar diunggah dan kemudian cara saya bisa mendapatkan path ke file yang baru diunggah.

Semua bantuan akan diapresiasi.

Dwayne Charrington
sumber

Jawaban:

8

Ternyata saya memecahkan pertanyaan saya sendiri dengan bantuan dari seorang rekan. Dua filter yang dipanggil setelah media diunggah atau ketika media sedang diedit adalah; 'add_attachment' dan 'edit_attachment'. Berikut adalah kode yang saya gunakan, saya kemudian memeriksa untuk melihat apakah lampiran adalah gambar (kode dihilangkan dari contoh).

function analyse_attachment($attachment_ID)
{          
    $attachment = get_attached_file($attachment_ID); // Gets path to attachment
    update_post_meta($attachment_ID, "image_rgb", $the_colour);
}

add_action("add_attachment", 'analyse_attachment');
add_action("edit_attachment", 'analyse_attachment');

Jelas saya telah menghilangkan beberapa hal yang tidak relevan dengan pertanyaan. Tetapi kode itu dipanggil tepat setelah Anda mengunggah atau mengedit lampiran.

Dwayne Charrington
sumber
4

Anda memiliki dua filter yang dapat Anda gunakan: attachment_fields_to_save yang mendapat dua paramaters ($ post, $ attachment) jadi:

add_filter('attachment_fields_to_save',your_image_analyse_function);

function your_image_analyse_function($post, $attachment){
  $attachment['url']
  //do your stuff
}

dan media_send_to_editoryang mendapat 3 paramaters ($ html, $ send_id, $ attachment) dan diaktifkan setelah Anda mengklik kirim ke editor sehingga sekali lagi Anda dapat menggunakan $ attachment.

add_filter('media_send_to_editor',your_image_analyse_function);

function your_image_analyse_function($html, $send_id, $attachment){
  $attachment['url']
  //do your stuff
}
Bainternet
sumber
Terima kasih Bainternet, sangat berguna. Meskipun, tidak satu pun dari itu yang saya cari. Setelah menanyakan pengembang PHP senior kami di tempat kerja, ia melihat-lihat file inti Wordpress dan menemukan tindakan yang dipanggil tepat setelah gambar atau apa pun yang diunggah. Ya, ada dua di antaranya: 'add_attachment' dan 'edit_attachment' Saya akan mempostingnya sebagai jawaban untuk orang lain.
Dwayne Charrington
0

Markup HTML:

<p>
  <label for="custom-upload">Upload New Image:</label>
  <input type="file" tabindex="3" name="custom-upload" id="custom-upload" />
</p>
<?php
  /*Retrieving the image*/
  $attachment = get_post_meta($postid, 'custom_image');

  if($attachment[0]!='')
  {
   echo wp_get_attachment_link($attachment[0], 'thumbnail', false, false);
  }

?>

Mengunggah gambar:

<?php
global $post; /*Global post object*/
$post_id = $post->ID; /*Geting current post id*/
$upload = $_FILES['upload']; /*Receive the uploaded image from form*/
add_custom_image($post_id, $upload); /*Call image uploader function*/

function add_custom_image($post_id, $upload)
{
 $uploads = wp_upload_dir(); /*Get path of upload dir of wordpress*/

 if (is_writable($uploads['path']))  /*Check if upload dir is writable*/
 {
  if ((!empty($upload['tmp_name'])))  /*Check if uploaded image is not empty*/
  {
   if ($upload['tmp_name'])   /*Check if image has been uploaded in temp directory*/
   {
    $file=handle_image_upload($upload); /*Call our custom function to ACTUALLY upload the image*/

    $attachment = array  /*Create attachment for our post*/
    (
      'post_mime_type' => $file['type'],  /*Type of attachment*/
      'post_parent' => $post_id,  /*Post id*/
    );

    $aid = wp_insert_attachment($attachment, $file['file'], $post_id);  /*Insert post attachment and return the attachment id*/
    $a = wp_generate_attachment_metadata($aid, $file['file'] );  /*Generate metadata for new attacment*/
    $prev_img = get_post_meta($post_id, 'custom_image');  /*Get previously uploaded image*/
    if(is_array($prev_img))
    {
     if($prev_img[0] != '')  /*If image exists*/
     {
      wp_delete_attachment($prev_img[0]);  /*Delete previous image*/
     }
    }
    update_post_meta($post_id, 'custom_image', $aid);  /*Save the attachment id in meta data*/

    if ( !is_wp_error($aid) ) 
    {
     wp_update_attachment_metadata($aid, wp_generate_attachment_metadata($aid, $file['file'] ) );  /*If there is no error, update the metadata of the newly uploaded image*/
    }
   }
  }
  else
  {
   echo 'Please upload the image.';
  }
 }
}

function handle_image_upload($upload)
{
 global $post;

        if (file_is_displayable_image( $upload['tmp_name'] )) /*Check if image*/
        {
            /*handle the uploaded file*/
            $overrides = array('test_form' => false);
            $file=wp_handle_upload($upload, $overrides);
        }
 return $file;
}
?>
Arvind07
sumber