WordPress

Inscreva-se em nosso canal no Youtube Daviwp

Aprenda como enviar arquivos de mídia para a Biblioteca do WordPress sem logar no painel

31/08/2013 WordPress (0) comentário

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.

Autor Domingos Teruel

daviwp

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, sou um dos organizadores do WordCamp evento oficial do WordPress em BH e co-fundador do Belo Horizonte WordPress Group juntamente com o fundador Mateus Neves, sou articulista de alguns sites, e fundador do daviwp.com, aqui compartilho conhecimentos para toda galera aficionada em WordPress.