私はバックエンドの私のプラグインで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(), '' );
}
}
ユーザーが新しいタブを開いて設定がリセットされない限り、これは問題なく動作します。今のところ大丈夫ですが、もっと簡単な方法があるかどうかを知りたいです。
見てみたいかもしれません
https://developer.wordpress.org/reference/functions/wp_upload_dir/
定義上、upload_dir
というフックがありますので、それを使ってpath
を変更することができます。
試したことも試したこともありませんが、試してみることができます。
デフォルトのメディアアップロード場所を変更するためには、あなたの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' );
アップロードしたファイルを 設定"メディア で月/年フォルダに整理するかどうかを選択できることを忘れないでください。