URL에서 이미지 업로드


20

SE가 URL에서 이미지를 업로드하는 방식이 정말 좋습니다 (많은 사람들이 할 것입니다!). 검색했지만 찾을 수 없습니다. WordPress에서 사용할 수있는 플러그인이나 이와 유사한 방법이 있습니까?

미디어 업로드 / 삽입 >> 컴퓨터에서 >> 파일 선택을 클릭 한 후 파일 이름 상자에 이미지 URL을 입력하여 이미지를 URL 에서 직접 업로드하고 크런치 할 수 있음을 알고 있습니다.

여기에 이미지 설명을 입력하십시오

이것은 훌륭한 기능이지만 널리 알려져 있지는 않습니다 (실제로는 그것을 발견했습니다). SE와 비슷한 것을 원합니다. 여기에서 사용자에게 이미지 URL을 추가하도록 알리는 옵션이 있습니다.

미디어 업 로더의 새 탭에 단순히 업로드 파일 필드를 추가하려면 어떻게해야합니까?

다음은 wordpress의 Media Upload 페이지에 새 탭을 추가하는 방법에 대한 자습서 이지만 해당 탭에 텍스트와 파일 업로드 필드 만 추가하고 싶습니다. 어떤 아이디어? WordPress Codex에서이 기능 또는 파일 업로드 필드를 직접 처리하는 항목을 찾을 수 없습니다.

감사.


기능 요청은 trac.wordpress.org에 속합니다.
Wyck

2
기능 요청이 아닙니다. 이 기능은 이미 내장되어 있습니다.
Travis Pflanz

@TravisPflanz Windows 용으로 여기에 와서 그것이 천재라고 생각했습니다. 확실히 워크 플로가 개선되었습니다. 어쨌든 Mac에서 그렇게 할 줄 알고 있습니까? command + shift + g는 URL을 지원하지 않는 것 같지만 다른 명령이 있는지 확실하지 않았습니다.
user658182

"Windows 파일 관리자에 URL 입력"에 비해 URL에서 업로드하는 이점은 파일이 소스에서 워드 프레스 서버로 직접로드된다는 것입니다. 내 경우에는 호스팅 센터를 통해 기가비트 회선을 통해 먼저 내 PC로 다운로드 한 다음 느린 모바일 연결을 통해 워드 프레스까지 사용하십시오.
Lenne

URL에서 직접 '업로드'하는 트릭은 Windows 10 (브라우저에서 테스트 한 Firefox, Chrome, IE11)에서는 작동하지 않으며 2012 년 이후 이전 버전의 Windows에서는 작동하지 않았을 수 있습니다. Windows는 URL에서 파일을 다운로드합니다. 컴퓨터의 임시 위치로 이동하여 컴퓨터에서 업로드하십시오. 따라서이 트릭을 사용하여 큰 비디오 파일을 '업로드'할 수는 없습니다 ( PHP 및 WordPress가 찾아보기 전에 호스팅 제공 업체의 HTTP 413 응답 을 우회 하기 위해).
Jake

답변:


24

PHP 스크립트를 작성하거나 여기 에서이 코드의 플러그인을 만들 수 있습니다. 많은 이미지를 가져와야하는 프로젝트 중 하나에서 사용했습니다.

먼저 이미지를 가져 와서 업로드 디렉토리에 저장하십시오.

$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);

그런 다음 이미지를 미디어 라이브러리에 삽입 할 수 있습니다.

$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 );

그리고 짜잔-우리는 간다. 첨부 파일 배열에서 다양한 다른 매개 변수를 설정할 수도 있습니다. URL 배열 또는 이와 유사한 것을 얻으면 스크립트를 루프로 실행할 수 있지만 이미지 기능을 실행하는 데 많은 시간과 메모리가 필요하다는 점에 유의하십시오.


아 죄송합니다. 처음에는 이미지가 보이지 않았습니다. 어쩌면 나는 이것을 정확하게하는 작은 플러그인을 작성할 것입니다. 나는 당신이 지금까지 내 스크립트와 함께 할 수 있기를 바랍니다-나는 당신을 플러그인 뉴스에 게시 할 것입니다.
fischi

나는 당신이 게시 한대로 이미지를 추가했다고 생각합니다. 나는 점심에서 돌아올 때 좀 더 깊이 살펴볼 것입니다. 도와 주셔서 감사합니다! 항상 감사합니다.
Travis Pflanz

비활성화 된 file_get_contents경우 URL 사용이 작동하지 않습니다 .- 다른 WP 환경에서 더 높은 호환성을 제공합니다.allow_url_fopenphp.iniwp_remote_get
highvolt

안녕하세요, 감사 답변, 무엇에 wp_generate_attachment_metadatawp_update_attachment_metadata?
gdfgdfg

12

당신은 기능을 사용할 수 있습니다 download_url()wp_handle_sideload().

download_url()

WordPress HTTP 클래스를 사용하여 URL을 로컬 임시 파일로 다운로드합니다. 호출 함수는 파일을 링크 해제 ()해야합니다.

wp_handle_sideload()

기존 미디어 업로드 대신 다른 서버에서 미디어 항목을 검색하는 프로세스 인 사이드로드를 처리합니다. 이 프로세스에는 파일 이름을 삭제하고, mime 유형의 확장자를 확인하고, 파일을 uploads 디렉토리의 해당 디렉토리로 이동하는 과정이 포함됩니다.

예:

// 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
    }

}

이 코드를 사용하여 이미지를 업로드 디렉토리에 성공적으로 추가했지만 Wordpress 백엔드의 내 미디어 라이브러리로 이동하면 어디서나 찾을 수 없으며 검색에 표시되지 않습니다. 올바른 권한이 있지만 여전히 운이 아닌지 확인했습니다. 표시되지 않는 이유는 무엇입니까?
Nick

관리자 측에는 항목을 추가하지 않습니다. 관리자에서 항목을 추가하려면 wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment 또는 $ _FILES 전역 변수를 수정하여이를 사용할 수 있습니다. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli

전혀 작동하지 않습니다
Cameron A

5

워드 프레스 플러그인 디렉토리- 잡아 및 저장

이 플러그인을 사용하면 원격 URL에서 이미지를 가져 와서 자신의 워드 프레스 미디어 라이브러리에 저장할 수 있습니다. 이렇게하면 소유자가 원격 이미지를 제거했는지 걱정할 필요가 없습니다. 또한 이미지를 로컬 컴퓨터에 다운로드하고 자신의 워드 프레스에 다시 업로드하는 단계를 저장합니다.

이미지를 가져온 후 워드 프레스는 이미지를 업로드 한 직후와 같이 "게시물에 삽입"또는 "속성 변경"메시지를 표시합니다.


1

원격 이미지를 WordPress로 가져 오는 방법에는 적어도 세 가지가 있습니다.

  1. 다른 답변에 언급 된 플러그인 가져 오기 및 저장 . 이 플러그인은 약간 오래되어 파일을 직접 저장하므로 크기가 다른 썸네일이 만들어지지 않습니다. 글을 쓰는 시점에서 2 년 전의 마지막 업데이트.

  2. 외부 이미지 가져 오기 플러그인 에는 원격으로 연결된 이미지를 대량으로 가져옵니다. 이 기능을 사용하려면 PHP 메모리 제한을 늘려야 할 수도 있습니다. 글을 쓰는 시점에서 2 년 전의 마지막 업데이트.

  3. URL에서 이미지 저장 및 가져 오기 플러그인 은 기본 기능을 사용하여 이미지를 가져 오기 때문에 미디어 갤러리에서 올바르게 생성되고 모든 축소판 등이 만들어집니다. 이 플러그인은 2016 년에 마지막으로 업데이트되었으며 WordPress 4.7에서 작동합니다

공개 : URL 플러그인에서 이미지 저장 및 가져 오기를 작성했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.