web-dev-qa-db-ja.com

メディアのアップロード - ファイルを1つだけ選択してください

アップロード処理を制限して1つのファイルのみを選択することは可能です。今、人はPCから様々なファイルを選択することができます、私はちょうど1つのファイルにこの機能を制限する方法を見つけようとしています。

前もって感謝します。

WordPressには2つのメディアアップローダが含まれています。 Flashアップローダでは複数のファイルを選択できますが、ブラウザアップローダでは一度に1ファイルしか使用できません。

Flashアップローダを無効にするには、functions.phpに次のフィルタを追加します。

add_filter('flash_uploader', create_function('$flash', 'return false;'));

編集

さらに調査した後、create_functionを使用するのはおそらく良い考えではありません。フィルタを削除するためのより良い方法は次のようになります。

function disable_flash_uplaoder() {
        return $flash = false;
}
add_filter( 'flash_uploader', 'disable_flash_uploader', 7 ); 
1
Chris_O

Chrisが答えた答えはNiceですが、実際にはアップロードを1ファイルのみに制限するわけではありません。したがって、ユーザーは必要なだけアップロードできますが、フラッシュアップローダーでのアップロードも1ファイルのみに制限できます。 wp_handle_upload_prefilterフックを使用してファイルを作成するには、 を見てください。Mikesは、同様の質問に答えます

1
Bainternet

BUTTON_ACTION設定 を使用して、1つのファイルのみを受け入れるようにFlashアップローダーを変更できます。これは、SWFUpload構成(WordPressでハードコード化されている)または生成されたSWFUploadオブジェクトの setButtonAction() method を介して変更できますが、これはFlashファイルのロード後にのみ機能します。 swfupload_loaded_handlerフックにフックすることでこれを行うことができました。

var wpse15264_original_onload = SWFUpload.onload;
SWFUpload.onload = function() {
    wpse15264_original_onload();
    swfu.addSetting( 'swfupload_loaded_handler', function() {
        this.setButtonAction( SWFUpload.BUTTON_ACTION.SELECT_FILE );
    } );
}

post-html-upload-uiフック を使用して、SWFUploadコードの後に​​これを出力できます。

このコードは、swfupload_loaded_handlerイベントへのハンドラーをaddではなく、replaces現在のハンドラ。 WordPressはこのハンドラーを使用しないため、これは問題になりませんが、将来使用する場合は、元のハンドラーを保存して実行する必要があります(onloadハンドラーで行ったように)。

もちろん、これは人々がアップローダーを複数回使用することを妨げるものではありません。その解決策については、Bainternetのリファレンスを参照してください。

0
Jan Fabry