Bildupload von URL

20

Ich mag die Art und Weise, wie SE ein Bild von einer URL hochlädt (ich bin sicher, dass viele es tun!). Ich habe gesucht, kann aber nicht finden, gibt es ein Plugin oder eine ähnliche Methode für WordPress?

Ich weiß, dass ein Bild direkt von einer URL hochgeladen und geladen werden kann, indem Sie die Bild-URL in das Feld Dateiname eingeben, nachdem Sie auf Upload / Insert Media >> From Computer >> Choose File geklickt haben

Bildbeschreibung hier eingeben

Dies ist ein großartiges Feature, aber nicht sehr bekannt (ich habe es gerade erst entdeckt). Ich hätte gerne etwas Ähnliches wie SE, wo es eine Option gibt, mit der der Benutzer die Bild-URL hinzufügen kann.

Wie füge ich einfach das Feld für die Upload-Datei zu einer neuen Registerkarte im Medien-Uploader hinzu?

Hier ist eine Anleitung zum Hinzufügen eines neuen Tabs auf der Seite zum Hochladen von Medien in WordPress . Ich möchte jedoch nur Text und das Feld zum Hochladen von Dateien zu diesem Tab hinzufügen. Irgendwelche Ideen? Ich konnte im WordPress-Codex nichts finden, das sich direkt mit dieser Funktion oder dem Feld zum Hochladen von Dateien befasst.

Vielen Dank.

Travis Pflanz
quelle
Feature Requests gehören auf trac.wordpress.org.
Wyck
2
Keine Feature-Anfrage. Das Feature ist bereits eingebaut.
Travis Pflanz
@TravisPflanz Kam für Windows auf dieses Problem und dachte, es sei genial - definitiv hat sich mein Workflow verbessert. Weißt du sowieso, dass du das in Mac machst? command + shift + g scheint keine URLs zu unterstützen, war sich aber nicht sicher, ob es einen anderen Befehl gab.
user658182
Der Vorteil des Uploads von der URL über die Eingabe der URL im Windows-Dateimanager besteht darin, dass die Datei direkt von der Quelle auf den WordPress-Server geladen wird. in meinem Fall über die Gigabit-Leitung des Hosting-Centers, anstatt zuerst auf meinen PC und dann über eine langsame mobile Verbindung auf WordPress zu übertragen.
Lenne
Der Trick, eine URL direkt hochzuladen, funktioniert in Windows 10 nicht (in jedem vom Browser getesteten Firefox, Chrome, IE11) und hat in früheren Versionen von Windows seit 2012 wahrscheinlich nicht funktioniert. Windows lädt die Datei von der URL herunter an einen temporären Speicherort auf Ihrem Computer und laden Sie von dort. Daher ist es nicht möglich, mit diesem Trick große Videodateien hochzuladen (um die HTTP 413- Antwort des Hosting-Anbieters zu umgehen, bevor PHP und WordPress überhaupt einen Einblick erhalten).
Jake,

Antworten:

24

Sie können hier ein PHP-Skript schreiben oder Ihr eigenes Plugin für diesen Code erstellen. Ich habe es in einem meiner Projekte verwendet, in das ich eine große Anzahl von Bildern importieren musste.

Holen Sie sich zuerst das Bild und speichern Sie es in Ihrem Upload-Verzeichnis:

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

Danach können wir das Bild in die Medienbibliothek einfügen:

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

und voila - los geht's Sie können auch verschiedene andere Parameter im Anhangs-Array festlegen. Wenn Sie eine Reihe von URLs oder ähnliches haben, können Sie das Skript in einer Schleife ausführen. Beachten Sie jedoch, dass die Ausführung der Image-Funktionen viel Zeit und Speicherplatz in Anspruch nimmt.

fischi
quelle
Oh, tut mir leid, ich habe das Bild zuerst nicht gesehen. Vielleicht schreibe ich ein kleines Plugin, das genau das macht. Ich hoffe, dass Sie mit meinem Skript soweit zurechtkommen - ich werde Sie über Neuigkeiten zu Plugins auf dem Laufenden halten.
Fischi
Ich glaube, ich habe das Bild so hinzugefügt, wie Sie es gepostet haben. Ich werde genauer hinschauen, wenn ich vom Mittagessen zurückkomme. Danke für deine Hilfe! Immer geschätzt.
Travis Pflanz
Die Verwendung von file_get_contentsmit einer URL funktioniert nicht, wenn allow_url_fopenin deaktiviert ist php.ini- wp_remote_getwird in verschiedenen WP-Umgebungen besser kompatibel sein
highvolt
Hallo, danke für die Antwort, für was ist wp_generate_attachment_metadataund wp_update_attachment_metadata?
gdfgdfg
12

Sie können die Funktionen download_url()und verwenden wp_handle_sideload().

download_url()

Lädt eine URL in eine lokale temporäre Datei mithilfe der WordPress-HTTP-Klasse herunter. Bitte beachten Sie, dass die aufrufende Funktion die Verknüpfung () der Datei aufheben muss.

wp_handle_sideload()

Behandeln Sie Seitenladevorgänge. Hierbei handelt es sich um das Abrufen eines Medienelements von einem anderen Server anstelle eines herkömmlichen Medienuploads. Bei diesem Vorgang wird der Dateiname bereinigt, die Erweiterungen auf MIME-Typ überprüft und die Datei in das entsprechende Verzeichnis im Upload-Verzeichnis verschoben.

Beispiel:

// 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
quelle
Ich habe diesen Code verwendet und das Bild erfolgreich in das Upload-Verzeichnis eingefügt, aber wenn ich zu meiner Medienbibliothek im Wordpress-Backend gehe, kann ich es nirgendwo finden und es wird nicht in der Suche angezeigt. Ich habe dafür gesorgt, dass es die richtigen Berechtigungen hatte, aber immer noch kein Glück. Aus irgendeinem Grund würde es nicht auftauchen?
Nick
Es werden keine Einträge auf der Admin-Seite hinzugefügt. Wenn Sie Einträge in admin hinzufügen möchten, können Sie besser wp_insert_attachment () verwenden. codex.wordpress.org/Function_Reference/wp_insert_attachment oder Sie können dies verwenden, indem Sie die globale Variable $ _FILES ändern. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli
es funktioniert überhaupt nicht
Cameron A
5

WordPress-Plugin-Verzeichnis - Grab & Save

Mit diesem Plugin können Sie Bilder von einer Remote-URL abrufen und in Ihrer eigenen WordPress-Medienbibliothek speichern. Auf diese Weise haben Sie sich nie Sorgen gemacht, ob das Remote-Image vom Eigentümer entfernt wurde. Dies erspart Ihnen auch die Schritte zum Herunterladen des Bildes auf den lokalen Computer und zum erneuten Hochladen auf Ihr eigenes WordPress.

Nach dem Aufnehmen des Bildes werden Sie von WordPress aufgefordert, entweder "In Beitrag einfügen" oder "Attribute ändern", genau wie nach dem Hochladen eines Bildes.

Travis Pflanz
quelle
1

Es gibt mindestens drei Möglichkeiten, Remote-Bilder in WordPress zu importieren:

  1. Grab and Save Plugin , das in der anderen Antwort erwähnt wird. Dieses Plug-In ist etwas älter und speichert die Datei direkt, sodass keine Miniaturansichten in verschiedenen Größen erstellt werden. Letzte Aktualisierung vor mehr als 2 Jahren zum Zeitpunkt des Schreibens.

  2. Externes Bild importieren Plugin hat Bulk-Import für remote verknüpfte Bilder. Möglicherweise müssen Sie Ihr PHP-Speicherlimit erhöhen, damit dies funktioniert. Letzte Aktualisierung vor mehr als 2 Jahren zum Zeitpunkt des Schreibens.

  3. Save & Import Image from URL Plugin importiert das Bild mit nativen Funktionen, so dass es ordnungsgemäß in der Mediengalerie erstellt wird und alle Thumbnails usw. erstellt werden. Dieses Plugin wurde zuletzt im Jahr 2016 aktualisiert und funktioniert mit WordPress 4.7

Offenlegung: Ich habe das Save & Import Image vom URL Plugin erstellt

user3096626
quelle