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.


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.


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
    }

}

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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.