Olá amigos, hoje quero dar uma dica rápida e super útil de como enviar arquivos de mídias para a Biblioteca do WordPress fora do Administrador ou da infra do WordPress.
Recentemente precisei fazer um widget para Android que habilitava o upload de arquivos direto para o WordPress, devido a restricão de uso o xml-rpc do WordPress, precisei desenvolver uma API externa, mas isso não vem ao caso, irei demonstrar como usar as funções de API para trabalhar com uploads de arquivos e imagem destacada.

if(! isset($_POST['post_id'])
return false;
$id = (int) $_POST['post_id'];
if(!empty($_FILES['file'])) {
$file = $_FILES['file'];
if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ROOT_WP . 'wp-admin/includes/file.php' );
//Chamada para a funcao que efetiva o upload
$upload = wp_handle_upload($file,array('test_form' => false));
//Se Upload ok
if(!isset($upload['error']) && isset($upload['file'])) {
$filetype = wp_check_filetype(basename($upload['file']), null);
$title = $file['name'];
$ext = strrchr($title, '.');
$title = ($ext !== false) ? substr($title, 0, -strlen($ext)) : $title;
$attachment = array(
'post_mime_type' => $filetype['type'],
'post_title' => addslashes($title),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $upload['file']);
$attach_data = wp_generate_attachment_metadata( $attach_id, $upload['file']);
//Cadastra o arquivo como Media
wp_update_attachment_metadata( $attach_id, $attach_data );
if(set_post_thumbnail($id,$attach_id))
return true;
}else {
error_log("\$_FILES not defined or empty!");
}//check empty
return false;
Primeiramente verificamos se um arquivo foi enviado ao script. Depois precisamos verificar se a função wp_handle_upload() está disponível em caso negativo tornamo-as disponivel incluindo ‘wp-admin/includes/file.php’.
Está função é resposável por lidar com envios PHP no WordPress, sanitização de nomes de arquivos, verificação extensões, mime-types, e mover o arquivo para o diretório apropriado dentro do diretório uploads.
Depois, se o upload foi feito obtemos os dados do arquivo enviado usando a função wp_check_filetype() e formatamos os dados para incluir na tabela “post” como um “attachment” que passaremos como argumentos para a função wp_insert_attachment() e adicionalmente podemos gerar todos os tamanhos de imagens utilizada no site chamando a função wp_generate_attachment_metada().
E finalmente você pode definir como uma imagem destacada de um Post.
Para obter mais informações sobre as funções exibidas acesse o Codex lá você encontrará todos os detalhes de como usar cada uma das funções utilizadas neste exemplo.
Have a lot of fun! :)





