Tải lên hình ảnh từ URL


20

Tôi thực sự thích cách SE tải lên một hình ảnh từ một URL (tôi chắc chắn nhiều người làm như vậy!). Tôi đã tìm kiếm, nhưng không thể tìm thấy, có một plugin hoặc một phương pháp tương tự như cái này có sẵn cho WordPress không?

Tôi biết một hình ảnh có thể được tải lên và crunch trực tiếp từ một URL bằng cách nhập URL hình ảnh vào hộp Tên tệp sau khi bạn nhấp vào Tải lên / Chèn phương tiện >> Từ máy tính >> Chọn tệp

nhập mô tả hình ảnh ở đây

Đây là một tính năng tuyệt vời, nhưng không được biết đến rộng rãi (tôi thực sự chỉ phát hiện ra nó). Tôi muốn một cái gì đó giống như SE hơn, nơi có một tùy chọn cho phép người dùng biết để thêm URL hình ảnh.

Làm cách nào để thêm đơn giản vào trường tệp tải lên vào tab mới trong trình tải lên phương tiện?

Dưới đây là hướng dẫn về Cách thêm tab mới trong trang Tải lên phương tiện trong wordpress , nhưng tôi muốn chỉ thêm một số văn bản và trường tải lên tệp vào tab đó. Có ý kiến ​​gì không? Tôi không thể tìm thấy bất cứ điều gì trong WordPress Codex liên quan đến tính năng này hoặc trường tải lên tệp trực tiếp.

Cảm ơn.


Yêu cầu tính năng thuộc về trac.wordpress.org.
Wyck

2
Không phải là một yêu cầu tính năng. Tính năng này đã được tích hợp sẵn.
Travis Pflanz

@TravisPflanz Đã xem qua điều này cho Windows và nghĩ rằng đó là thiên tài - chắc chắn đã cải thiện quy trình làm việc của tôi. Biết cách nào để làm điều đó trong Mac? lệnh + shift + g dường như không hỗ trợ các url, nhưng không chắc chắn nếu có lệnh khác.
dùng658182

Ưu điểm của việc tải lên từ url so với "nhập url trong windows filemanager" là tệp được tải trực tiếp từ nguồn tới máy chủ wordpress; trong trường hợp của tôi qua dòng gigabit của trung tâm lưu trữ thay vì đầu tiên được tải xuống máy tính của tôi và sau đó lên đến wordpress qua kết nối di động chậm.
Lenne

Thủ thuật 'tải lên' trực tiếp từ một URL không hoạt động trong Windows 10 (trong bất kỳ trình duyệt nào - Firefox, Chrome, IE11 đã thử nghiệm) và có thể không hoạt động trong các phiên bản Windows trước kể từ năm 2012. Windows sẽ tải xuống tệp từ URL đến một vị trí tạm thời trên máy tính của bạn và tải lên từ đó. Vì vậy, không thể sử dụng thủ thuật này để 'tải lên' các tệp video lớn (để bỏ qua phản hồi HTTP 413 của nhà cung cấp dịch vụ lưu trữ trước khi PHP và WordPress thậm chí có thể xem qua).
Jake

Câu trả lời:


24

bạn có thể viết một tập lệnh php hoặc tạo plugin mã riêng của mình ở đây, tôi đã sử dụng nó trong một trong các dự án của tôi, nơi tôi phải nhập một số lượng lớn hình ảnh.

đầu tiên, lấy hình ảnh và lưu nó trong thư mục tải lên của bạn:

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

Sau đó, chúng ta có thể chèn hình ảnh vào thư viện phương tiện:

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

và voila - ở đây chúng tôi đi. bạn cũng có thể đặt nhiều tham số khác trong mảng đính kèm. nếu bạn có một mảng các url hoặc một cái gì đó tương tự, bạn có thể chạy tập lệnh trong một vòng lặp - nhưng lưu ý rằng các chức năng hình ảnh chiếm rất nhiều thời gian và bộ nhớ để thực thi.


oh, tôi xin lỗi, tôi đã không nhìn thấy hình ảnh lúc đầu. có lẽ tôi sẽ viết một plugin nhỏ làm chính xác điều này. Tôi hy vọng bạn có thể hòa hợp với kịch bản của tôi cho đến nay - tôi sẽ giữ cho bạn được đăng trên tin tức plugin.
fischi

Tôi nghĩ rằng tôi đã thêm hình ảnh giống như bạn đăng. Tôi sẽ có một cái nhìn sâu sắc hơn khi tôi trở về từ bữa trưa. Cảm ơn sự giúp đỡ của bạn! Luôn luôn đánh giá cao.
Travis Pflanz

việc sử dụng file_get_contentsvới một URL sẽ không hoạt động nếu allow_url_fopenbị vô hiệu hóa php.ini- wp_remote_getsẽ tương thích cao hơn trên các môi trường WP khác nhau
highvolt

Xin chào, cảm ơn vì câu trả lời, vì cái gì wp_generate_attachment_metadatawp_update_attachment_metadata?
gdfgdfg

12

Bạn có thể sử dụng các chức năng download_url()wp_handle_sideload().

download_url()

Tải xuống một url đến một tệp tạm thời cục bộ bằng Lớp HTTP HTTP. Xin lưu ý rằng chức năng gọi phải hủy liên kết () tệp.

wp_handle_sideload()

Xử lý sideloads, đó là quá trình lấy một mục phương tiện từ một máy chủ khác thay vì tải lên phương tiện truyền thống. Quá trình này bao gồm vệ sinh tên tệp, kiểm tra các phần mở rộng cho loại mime và di chuyển tệp vào thư mục thích hợp trong thư mục tải lên.

Thí dụ:

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

}

Tôi đã sử dụng mã này và nó đã thêm thành công hình ảnh trong thư mục tải lên nhưng khi tôi vào Thư viện phương tiện của mình trong phần phụ trợ Wordpress, tôi không thể tìm thấy nó ở bất cứ đâu và nó không hiển thị trong tìm kiếm. Tôi chắc chắn rằng nó có quyền chính xác nhưng vẫn không may mắn. Bất cứ lý do gì nó sẽ không được hiển thị?
Nick

Nó sẽ không thêm các mục trong phía quản trị viên. Nếu bạn muốn thêm các mục trong quản trị viên, thì tốt hơn bạn có thể sử dụng, wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment hoặc bạn có thể sử dụng điều này bằng cách sửa đổi biến toàn cầu $ _FILES. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli

nó hoàn toàn không hoạt động
Cameron A

5

Thư mục Plugin WordPress - Lấy và Lưu

Plugin này cho phép bạn lấy hình ảnh từ url từ xa và lưu vào thư viện phương tiện wordpress của riêng bạn. Bằng cách làm như vậy, bạn không bao giờ lo lắng nếu hình ảnh từ xa đã bị xóa bởi chủ sở hữu của nó. Điều này cũng giúp bạn tiết kiệm các bước để tải hình ảnh xuống máy tính cục bộ và tải lại lên wordpress của riêng bạn.

Sau khi lấy hình ảnh, wordpress sẽ nhắc bạn "chèn vào bài viết" hoặc "thay đổi thuộc tính" giống như sau khi bạn tải lên một hình ảnh.


1

Có ít nhất ba cách để nhập hình ảnh từ xa vào WordPress:

  1. Grab và Save Plugin , được đề cập trong câu trả lời khác. Trình cắm này cũ hơn một chút và nó lưu tệp trực tiếp, do đó hình thu nhỏ ở các kích cỡ khác nhau không được tạo. Cập nhật lần cuối cách đây hơn 2 năm tại thời điểm viết bài.

  2. Nhập Plugin hình ảnh bên ngoài có nhập hàng loạt cho hình ảnh được liên kết từ xa. Bạn có thể cần tăng giới hạn bộ nhớ PHP để làm việc này. Cập nhật lần cuối cách đây hơn 2 năm tại thời điểm viết bài.

  3. Lưu và nhập hình ảnh từ URL Plugin nhập hình ảnh bằng các chức năng gốc, do đó, nó được tạo đúng trong thư viện phương tiện và tất cả các hình thu nhỏ, v.v. Plugin này được cập nhật lần cuối vào năm 2016 và hoạt động với WordPress 4.7

Tiết lộ: Tôi đã tạo Lưu & Nhập hình ảnh từ Plugin URL

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.