web-dev-qa-db-fra.com

Changer l'URL de téléchargement de média de WordPress?

Ce n'est pas l'habituel "Comment changer le dossier de téléchargement de média?" question. L'ensemble de notre site est géré par un CDN. Le CDN abandonne POST demandes avec un fichier de 5 à 6 Mo, de sorte que les téléchargements WordPress échouent. Je pense que je peux contourner ce problème en modifiant l'endroit où WordPress envoie les demandes de téléchargement de fichiers.

Si l'URL normale du site est www.example.com, je souhaite que les envois soient envoyés à example.com, notre serveur Origin, et nous n'aurons aucun problème à gérer les envois de fichiers plus volumineux. Des idées?

2
kingkool68

C'était en fait plus facile que je pensais.

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 );

L'URL pour le téléchargement de contenu multimédia serait normalement http://www.example.com/wp-admin/media-new.php serait désormais http://example.com/wp-admin/media-new.php puisque les URL sont transmises via admin_url() que vous pouvez filtrer.

3
kingkool68

Je ne sais pas trop de quoi tu parles.

Vous pouvez changer d'où le WP charge les fichiers si c'est ce que vous voulez dire? add_filter( 'pre_option_upload_url_path', function() { return 'http://yoursite.com/wp-content/uploads'; } );

C’est ce que j’utilise pour développer sur un serveur local avec tous les "vrais trucs/uploads" dans les serveurs live.

edit: donc non, cela ne changera pas l'endroit où finissent vos envois depuis l'administrateur, mais simplement l'endroit où WP charge les fichiers multimédias. Pour changer le dossier par défaut où les téléchargements de supports se termineront, je pense que vous avez besoin d’une fonction de téléchargement personnalisée.

edit2: citation de ici

Vous pouvez utiliser le filtre '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