web-dev-qa-db-ja.com

アップロード時に画像ファイル名を取得するためのフック

アップロードした画像の完全なローカルファイル名を取得して、それを新しいディレクトリにコピーして自分の画像処理スクリプトで処理できるようにします。これを達成するためにどのフック/アクションを調べるべきですか?

ありがとう

1
Tom

handle_uploadフックは、wp_handle_uploadの実行後に呼び出され、 'file'、 'url'& 'type'で構成される名前付き配列を送信します。あなたが達成する必要があるものに応じて、あなたはそれを利用するためにおそらくこのようなコードを使うことができます:

function process_images($results) {
    if( $results['type'] === 'image/jpeg' ) { // or /png or /tif / /whatever
        $filename = $results[ 'file' ];
        $url = $results[ 'url' ];

        // manipulate the image
    }
}

add_action('wp_handle_upload', 'process_images');

編集:添付ファイルIDも必要な場合は、添付ファイルの追加/編集など、より高いレベルで接続するほうがよい場合があります。

add_action('add_attachment', 'process_images');
add_action('edit_attachment', 'process_images');

その場合、送信される変数はattachment_idであり、残りの部分は次のようにして導出できます。

$metadata = wp_get_attachment_metadata( $results );
6
Simon Scarfe

ファイルのルートに対する相対パスだけでなく、ファイル名が必要な場合は、次のコード行を追加する必要があります。

$filename = substr($results['file'], ( strrpos($results['file'], '/', -1) + 1 ) ); //add +1 to remove the slash at the beginning 

編集:このstrrpos()ソリューションを投稿した直後に、私は最良のものを見つけました:

$filename = basename($results['url']);
0
anou