Como adicionar mídia do front-end a uma publicação existente?

Golden Apples Design criou (tanto quanto eu sei) a function de upload de mídia que muitas pessoas no WP.A e em outros lugares parecem recomendar. Mas todas as Q & As que posso encontrar no StackExchange lidam com a criação de uma postagem inteiramente nova.

Qual é a melhor maneira de obter esse (ou outro snippet) para fazer upload de mídia do front-end, anexá-lo à postagem atual, gerar as miniaturas apropriadas e, em seguida, atualizar a página que mostra a nova imagem na [galeria]?

Aqui está o código de Than: no arquivo de funções …

function insert_attachment($file_handler,$post_id,$setthumb='false') { // check to make sure its a successful upload if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false(); require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id = media_handle_upload( $file_handler, $post_id ); if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id); return $attach_id; 

No header do modelo da página …

 // set $post_id to the id of the post you want to attach // these uploads to (or 'null' to just handle the uploads // without attaching to a post) if ($_FILES) { foreach ($_FILES as $file => $array) { $newupload = insert_attachment($file,$post_id); // $newupload returns the attachment id of the file that // was just uploaded. Do whatever you want with that now. } } 

Fazer upload do formulário usado …

 

Solutions Collecting From Web of "Como adicionar mídia do front-end a uma publicação existente?"

@AboSami realmente respondeu esta pergunta em uma postagem mais antiga que não estava aparecendo na minha diligência de pesquisa. Enquanto ele estava realmente procurando por algo, seu código de exemplo funcionou muito bem.

Aqui está o script:

 < ?php $post_id = $post->ID; if ( isset( $_POST['html-upload'] ) && !empty( $_FILES ) ) { require_once(ABSPATH . 'wp-admin/includes/admin.php'); $id = media_handle_upload('async-upload', $post_id); //post id of Client Files page unset($_FILES); if ( is_wp_error($id) ) { $errors['upload_error'] = $id; $id = false; } if ($errors) { echo "

There was an error uploading your file.

"; } else { echo "

Your file has been uploaded.

"; } } ?>

< ?php wp_nonce_field('client-file-upload'); ?>

No header, mude $post_id para $post->ID .

 // set $post_id to the id of the post you want to attach // these uploads to (or 'null' to just handle the uploads // without attaching to a post) if ($_FILES) { foreach ($_FILES as $file => $array) { $newupload = insert_attachment($file,$post->ID); // $newupload returns the attachment id of the file that // was just uploaded. Do whatever you want with that now. } }