web-dev-qa-db-ja.com

Media Uploaderのデフォルトディクトリトリを変更する

私はバックエンドの私のプラグインでWordPressメディアライブラリを使用しています。アップロードパスを動的に変更する方法それはエンキュー中、またはJavaScriptでそれを作成するときに行うことができますか?

私はadmin_enqueue_scriptsアクションでwp_enqueue_media()を使用しており、後でwp.mediaを使用してJavascriptでメディアフレームを作成しています。

私はplupload_default_paramsフィルタを使用してアップロードするときにディレクトリを変更することに成功しました、しかし私はファイルをライブラリに問い合わせるquery-attachmentsアクションにフックする方法を知りません。

更新: 何時間ものいじった後、私はあきらめて別の解決策を取りました。プラグインの編集ページに新しい設定を追加し、それ以外の場合はリセットします。この方法で私はajax呼び出しでオプションにアクセスすることができます。

function change_upload_dir( $args ) {
        $user_id = get_current_user_id();
        $form = false;
        if( defined('DOING_AJAX') && DOING_AJAX ) {
            $form = get_option( 'test_edit_' . $user_id );
        }
        if($form || isset($_GET['type']) || isset($_POST['subfolder'])) {
            // change upload path 

そしてプラグイン構成で:

    if( !(defined('DOING_AJAX') && DOING_AJAX) 
       && false === strpos($_SERVER['REQUEST_URI'], 'wp-content') ) {
        $edit = get_option( 'test_edit_' . get_current_user_id() );
        if ( $edit && $edit != '' ) {
            update_option( 'test_edit_' . get_current_user_id(), '' );
        }
    }

ユーザーが新しいタブを開いて設定がリセットされない限り、これは問題なく動作します。今のところ大丈夫ですが、もっと簡単な方法があるかどうかを知りたいです。

6

見てみたいかもしれません

https://developer.wordpress.org/reference/functions/wp_upload_dir/

定義上、upload_dirというフックがありますので、それを使ってpathを変更することができます。

試したことも試したこともありませんが、試してみることができます。

1

デフォルトのメディアアップロード場所を変更するためには、あなたのWordPressインストールのルートディレクトリにあるwp-config.phpファイルを編集する必要があります。アップロードディレクトリをwp-content/filesにしたい場合は、次のコードをwp-config.phpに配置する必要があります。

define( 'UPLOADS', 'wp-content/'.'files' );

アップロードディレクトリをhttp://www.example.com/files/のようにwp-contentの外に置きたい場合は、アップロードパスをwp-config.phpに設定する必要があります。

define( 'UPLOADS', ''.'files' );

アップロードしたファイルを 設定"メディア で月/年フォルダに整理するかどうかを選択できることを忘れないでください。

関数リファレンス/ wp_upload_dir - WordPress Codex

0
Mark Wilson