Upload de imagem do URL

20

Eu realmente gosto da maneira como o SE envia uma imagem de um URL (tenho certeza que muitos o fazem!). Estive pesquisando, mas não consigo encontrar, existe um plug-in ou um método semelhante a este disponível para o WordPress?

Sei que uma imagem pode ser carregada e triturada diretamente de um URL , inserindo-o na caixa Nome do arquivo depois de clicar em Carregar / Inserir mídia >> No computador >> Escolher arquivo

insira a descrição da imagem aqui

Esse é um ótimo recurso, mas não muito conhecido (eu realmente o descobri). Gostaria de algo um pouco mais parecido com o SE, onde existe uma opção que permite ao usuário adicionar o URL da imagem.

Como posso adicionar simplesmente o campo de upload de arquivo a uma nova guia no uploader de mídia?

Aqui está um tutorial de Como adicionar uma nova guia na página Upload de mídia no wordpress , mas quero adicionar apenas algum texto e o campo de upload de arquivo a essa guia. Alguma ideia? Não consegui encontrar nada no WordPress Codex que lida com esse recurso ou no campo de upload de arquivo diretamente.

Obrigado.

Travis Pflanz
fonte
As solicitações de recursos pertencem a trac.wordpress.org.
21712 Wyck
2
Não é uma solicitação de recurso. O recurso já está embutido.
Travis Pflanz
@TravisPflanz Me deparei com isso no Windows e achei que era genial - definitivamente melhorou meu fluxo de trabalho. Sabe de qualquer maneira para fazer isso no Mac? command + shift + g parece não suportar URLs, mas não tinha certeza se havia outro comando.
precisa saber é o seguinte
A vantagem do upload do url sobre o "enter url in windows filemanager" é que o arquivo é carregado diretamente da fonte para o servidor wordpress; no meu caso, pela linha de gigabit dos centros de hospedagem, em vez de primeiro ser baixada para o meu PC e depois até o wordpress em uma conexão móvel lenta.
Lenne
O truque para 'fazer upload' diretamente de uma URL não funciona no Windows 10 (em qualquer Firefox, Chrome, IE11 testado por navegador) e provavelmente não funcionou nas versões anteriores do Windows desde 2012. O Windows fará o download do arquivo a partir da URL para um local temporário no seu computador e faça o upload a partir daí. Portanto, não é possível usar esse truque para 'enviar' arquivos de vídeo grandes (para ignorar a resposta HTTP 413 do provedor de hospedagem antes que o PHP e o WordPress sequer procurem).
Jake

Respostas:

24

você pode escrever um script php ou criar seu próprio plugin desse código aqui, usei-o em um dos meus projetos em que tive que importar um grande número de imagens.

primeiro, obtenha a imagem e armazene-a no seu diretório de upload:

$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir['path'] . '/' . $filename;

$contents= file_get_contents('http://mydomain.com/folder/image.jpg');
$savefile = fopen($uploadfile, 'w');
fwrite($savefile, $contents);
fclose($savefile);

depois disso, podemos inserir a imagem na biblioteca de mídia:

$wp_filetype = wp_check_filetype(basename($filename), null );

$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => $filename,
    'post_content' => '',
    'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment, $uploadfile );

$imagenew = get_post( $attach_id );
$fullsizepath = get_attached_file( $imagenew->ID );
$attach_data = wp_generate_attachment_metadata( $attach_id, $fullsizepath );
wp_update_attachment_metadata( $attach_id, $attach_data );

e voila - aqui vamos nós. você também pode definir vários outros parâmetros na matriz de anexos. se você tiver uma variedade de URLs ou algo parecido, poderá executar o script em um loop - mas lembre-se de que as funções da imagem levam muito tempo e memória para serem executadas.

fischi
fonte
desculpe, não vi a imagem a princípio. talvez eu escreva um pequeno plugin fazendo exatamente isso. Espero que você possa se dar bem com o meu script até agora - vou mantê-lo informado sobre as novidades do plugin.
fischi
Acho que adicionei a imagem exatamente como você postou. Vou dar uma olhada mais profunda quando voltar do almoço. Obrigado pela ajuda! Sempre apreciado.
Travis Pflanz #
uso de file_get_contentsuma URL não trabalho vai se allow_url_fopenestá desabilitado no php.ini- wp_remote_getserá mais altamente compatível em diferentes ambientes WP
HIGHVOLT
Olá, obrigado pela resposta, pelo que é wp_generate_attachment_metadatae wp_update_attachment_metadata?
gdfgdfg 25/01
12

Você pode usar as funções download_url()e wp_handle_sideload().

download_url()

Baixa um URL para um arquivo temporário local usando a Classe HTTP do WordPress. Observe que a função de chamada deve desvincular () o arquivo.

wp_handle_sideload()

Lidar com carregamentos laterais, que é o processo de recuperar um item de mídia de outro servidor em vez de um upload de mídia tradicional. Esse processo envolve a limpeza do nome do arquivo, a verificação de extensões quanto ao tipo MIME e a movimentação do arquivo para o diretório apropriado no diretório de uploads.

Exemplo:

// Gives us access to the download_url() and wp_handle_sideload() functions
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// URL to the WordPress logo
$url = 'http://s.w.org/style/images/wp-header-logo.png';
$timeout_seconds = 5;

// Download file to temp dir
$temp_file = download_url( $url, $timeout_seconds );

if ( !is_wp_error( $temp_file ) ) {

    // Array based on $_FILE as seen in PHP file uploads
    $file = array(
        'name'     => basename($url), // ex: wp-header-logo.png
        'type'     => 'image/png',
        'tmp_name' => $temp_file,
        'error'    => 0,
        'size'     => filesize($temp_file),
    );

    $overrides = array(
        // Tells WordPress to not look for the POST form
        // fields that would normally be present as
        // we downloaded the file from a remote server, so there
        // will be no form fields
        // Default is true
        'test_form' => false,

        // Setting this to false lets WordPress allow empty files, not recommended
        // Default is true
        'test_size' => true,
    );

    // Move the temporary file into the uploads directory
    $results = wp_handle_sideload( $file, $overrides );

    if ( !empty( $results['error'] ) ) {
        // Insert any error handling here
    } else {

        $filename  = $results['file']; // Full path to the file
        $local_url = $results['url'];  // URL to the file in the uploads dir
        $type      = $results['type']; // MIME type of the file

        // Perform any actions here based in the above results
    }

}
Rajilesh Panoli
fonte
Usei esse código e ele adicionou com sucesso a imagem no diretório de uploads, mas quando vou à minha Biblioteca de mídia no back-end do Wordpress, não consigo encontrá-lo em nenhum lugar e ele não aparece na pesquisa. Eu tive certeza de que tinha permissões corretas, mas ainda não tive sorte. Algum motivo para não aparecer?
Nick
Não adicionará entradas no lado do administrador. Se você deseja adicionar entradas no admin, é melhor usar, wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment ou você pode usá-lo modificando a variável global $ _FILES. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli
não funciona de todo
Cameron A
5

Diretório de plugins do WordPress - Pegue e salve

Este plugin permite que você pegue uma imagem do URL remoto e salve na sua própria biblioteca de mídia do wordpress. Ao fazer isso, você nunca se preocupou se a imagem remota foi removida pelo proprietário. Isso também poupa as etapas para baixar a imagem no computador local e fazer o upload novamente para o seu próprio wordpress.

Depois de capturar a imagem, o wordpress solicitará que você "insira na postagem" ou "altere os atributos", assim como após o upload de uma imagem.

Travis Pflanz
fonte
1

Existem pelo menos três maneiras de importar imagens remotas para o WordPress:

  1. Pegue e salve o plug-in , mencionado na outra resposta. Este plug-in é um pouco mais antigo e salva o arquivo diretamente, portanto, miniaturas em tamanhos diferentes não são criadas. Última atualização há mais de 2 anos no momento da redação deste artigo.

  2. Importar imagem externa O plug - in possui importação em massa para imagens vinculadas remotas. Pode ser necessário aumentar seu limite de memória PHP para que isso funcione. Última atualização há mais de 2 anos no momento da redação deste artigo.

  3. Salvar e importar imagem do plug-in de URL importa a imagem usando funções nativas, portanto ela é criada corretamente na galeria de mídia e todas as miniaturas etc. são feitas. Este plugin foi atualizado pela última vez em 2016 e funciona com o WordPress 4.7

Divulgação: Criei o Salvar e importar imagem do plug-in de URL

user3096626
fonte