web-dev-qa-db-ja.com

URLからの画像のアップロード

私はSEがURLから画像をアップロードする方法がとても好きです(私は多くの人がそうだと思います)。私は探していましたが見つかりません、 WordPressに利用できるプラグインやこれに似た方法はありますか?

画像は URLから直接アップロードおよび圧縮 メディアのアップロード/挿入>>コンピュータから>>ファイルの選択

enter image description here

これは素晴らしい機能ですが、あまり広くは知られていません(実際にそれを発見したばかりです)。ユーザーに画像のURLを追加するように知らせるオプションがあるSEのようなものがもう少し欲しいです。

メディアアップローダの新しいタブに単にアップロードファイルフィールドを追加する方法を教えてください。

これは wordpressのMedia Uploadページに新しいタブを追加する方法のチュートリアルです。 しかし、そのタブにはテキストとファイルアップロードフィールドのみを追加します。何か案は?この機能やファイルのアップロードフィールドを直接扱うWordPress Codexには、何も見つかりませんでした。

ありがとう。

20
Travis Pflanz

WordPressプラグインディレクトリ - グラブして保存

このプラグインを使用すると、リモートのURLから画像を取得して、独自のWordPressメディアライブラリに保存できます。そうすることで、リモートイメージがその所有者によって削除されたかどうかを心配することはありません。これにより、画像をローカルコンピュータにダウンロードして、自分のワードプレスに再度アップロードする手間も省けます。

画像を取得した後、wordpressは画像をアップロードした後と同じように、「投稿に挿入する」または「属性を変更する」のいずれかを要求します。

5
Travis Pflanz

あなたはphpスクリプトを書くことができます、またはここでこのコードのあなた自身のプラグインを作ることができます、私は私が多数のイメージをインポートしなければならなかった私のプロジェクトの1つでそれを使いました。

まず、画像を取得してアップロードディレクトリに保存します。

$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の配列などがある場合は、スクリプトをループで実行できます。ただし、image関数の実行には時間とメモリが多くかかります。

22
fischi

関数download_url()wp_handle_sideload()を使うことができます。

download_url()

WordPress HTTPクラスを使ってローカルの一時ファイルにURLをダウンロードします。呼び出し側の関数はファイルをunlink()しなければならないことに注意してください。

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
    }

}
11
Rajilesh Panoli

リモート画像をWordPressにインポートする方法は少なくとも3つあります。

  1. プラグインをつかんで保存 このプラグインは少し古く、ファイルを直接保存するので、異なるサイズのサムネイルは作成されません。執筆時点で2年以上前の最後の更新。

  2. 外部画像プラグインのインポート リモートリンクされた画像の一括インポートがあります。これが機能するには、PHPメモリ制限を増やす必要があるかもしれません。執筆時点で2年以上前の最後の更新。

  3. URLプラグインから画像を保存してインポート はネイティブ機能を使用して画像をインポートするので、メディアギャラリーに正しく作成され、すべてのサムネイルなどが作成されます。このプラグインは2016年に最後に更新され、WordPress 4.7で動作します

情報開示: URLプラグインからの画像の保存とインポートを作成しました

1
user3096626