it-swarm.com.de

Medien-Upload-URL von WordPress ändern?

Dies ist nicht das übliche "Wie ändere ich den Ordner zum Hochladen von Medien?" Frage. Unsere gesamte Site wird über ein CDN betrieben. Das CDN löscht POST Anfragen mit einer Datei von 5-6 MB, so dass das Hochladen von WordPress fehlschlägt. Ich kann das umgehen, indem ich ändere, wo WordPress Anfragen zum Hochladen von Dateien sendet.

Wenn die normale URL der Site www.example.com lautet, sollen Uploads nur an example.com gesendet werden, das unser Origin-Server ist, und bei der Verarbeitung größerer Datei-Uploads treten keine Probleme auf. Irgendwelche Ideen?

2
kingkool68

Es war tatsächlich einfacher als ich dachte.

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

Die URL für das Hochladen von Medien lautet normalerweise http://www.example.com/wp-admin/media-new.php und lautet jetzt http://example.com/wp-admin/media-new.php, da die URLs durch admin_url() geleitet werden, die Sie filtern können.

3
kingkool68

Ich bin mir nicht ganz sicher, was du meinst.

Sie können ändern, woher das WP die Dateien lädt, wenn Sie das meinen? add_filter( 'pre_option_upload_url_path', function() { return 'http://yoursite.com/wp-content/uploads'; } );

Das ist es, was ich benutze, um auf einem lokalen Server zu entwickeln, auf dem sich sowieso alle "echten Sachen/Uploads" auf den Live-Servern befinden.

edit: also nein, das ändert nichts daran, wo deine Uploads vom Administrator enden. Dies ändert nur, wo das WP die Mediendateien lädt. Um den Standardordner zu ändern, in dem das Hochladen von Medien endet, benötigen Sie meiner Meinung nach eine benutzerdefinierte Upload-Funktion.

edit2: Zitat aus hier

Sie können den Filter 'upload_dir' verwenden

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