web-dev-qa-db-ja.com

WordPressのメディアアップロードURLを変更しますか?

これは、「メディアのアップロードフォルダを変更するにはどうすればよいですか」という通常のことではありません。質問。私たちのサイト全体はCDNを通して運営されています。 CDNは5〜6MBのファイルでPOST要求をドロップするので、WordPressのアップロードは失敗します。 WordPressがファイルのアップロード要求を送信する場所を変更することでこれを回避できます。

通常のサイトのURLがwww.example.comの場合、アップロードは私たちのOriginサーバであるexample.comだけに送信され、より大きなファイルのアップロードの処理に問題はありません。何か案は?

2
kingkool68

実際、思ったより簡単でした。

function route_uploads_past_cdn( $url, $path ) {
    $upload_paths = array( 'async-upload.php', 'media-new.php' );
    if( !in_array( $path, $upload_paths ) ) {
        return $url;
    }

    return str_replace('www.', '', $url);
}
add_filter( 'admin_url', 'pew_route_uploads_past_cdn', 10, 2 );

メディアをアップロードするためのURLは通常http://www.example.com/wp-admin/media-new.phpになります。URLはadmin_url()を介して渡されるため、フィルタリングできるので、http://example.com/wp-admin/media-new.phpになります。

3
kingkool68

どういう意味なのかよくわかりません。

あなたがそれを意味するのであれば、WPがファイルをロードする場所から変更することができますか? add_filter( 'pre_option_upload_url_path', function() { return 'http://yoursite.com/wp-content/uploads'; } );

とにかくライブサーバーにある「本物のもの/アップロード」すべてを使ってローカルサーバー上で開発するために私が使用するのはそれです。

edit: いいえ、アップロードが管理者から終了する場所は変わりません。これはWPがメディアファイルをロードする場所を変更するだけです。メディアのアップロードが終了するデフォルトフォルダを変更するには、カスタムアップロード機能が必要だと思います。

edit2: からの引用 ここ

'upload_dir'フィルタを使うことができます

add_filter('upload_dir', 'set_upload_folder', 999);

function set_upload_folder( $upload_data ) { 
  // absolute dir path, must be writable by wordpress 
  $upload_data['basedir'] = trailingslashit(ABSPATH). '/files';
  $upload_data['baseurl'] = 'http://subdomain.wptest.com/files';
  $subdir = $upload_data['subdir'];
  $upload_data['path'] = $upload_data['basedir'] . $subdir;
  $upload_data['url'] = $upload_data['baseurl'] . $subdir;
  return wp_parse_args($upload_data, $upload_data);
}
0
jimihenrik