Tạo hosting phụ chứa file media cho website wordpress

Việc tạo một hosting phụ để lưu trữ file media cho website WordPress giúp giảm tải trên hosting chính, tối ưu hóa tốc độ tải trang và băng thông. Dưới đây là các bước cơ bản:


1. Mua và thiết lập hosting phụ

Bạn cần một hosting mới hoặc dịch vụ lưu trữ chuyên dụng (CDN, Cloud Storage) như:

  • Shared hosting: Dùng để lưu file media.
  • CDN (Content Delivery Network): Dịch vụ như Cloudflare, BunnyCDN hoặc AWS S3.
    Lưu ý: Hosting phụ nên hỗ trợ giao thức FTP hoặc có thể được tích hợp với WordPress.

2. Upload file media lên hosting phụ

Bạn có thể sử dụng các phương pháp sau:

  • FTP client (FileZilla, WinSCP):
    • Đăng nhập hosting phụ qua FTP và tạo thư mục (ví dụ: /media).
    • Upload toàn bộ file media từ WordPress (thư mục wp-content/uploads) hoặc file mới lên thư mục này.
  • Dịch vụ đồng bộ hóa: AWS CLI, Cyberduck cho AWS S3 hoặc Google Cloud.

3. Kết nối hosting phụ với WordPress

Sử dụng Plugin:

  • Cài đặt plugin WP Offload Media hoặc Media Library Folders Pro:
    • Kết nối hosting phụ với WordPress.
    • Thiết lập URL tùy chỉnh cho file media (thường ở dạng https://media.yourdomain.com).

Hoặc chỉnh sửa thủ công:

Thay đổi URL file media:
  1. Tạo Subdomain hoặc Domain trỏ tới hosting phụ:
    • Vào cPanel/DNS Zone Editor và thêm subdomain (ví dụ: media.yourdomain.com) trỏ đến hosting phụ.
  2. Chỉnh sửa file wp-config.php:
    Thêm dòng sau để thay đổi đường dẫn file media:

    define('UPLOADS', 'media');
  3. Cập nhật đường dẫn file media cũ (nếu có):
    Dùng SQL query trong phpMyAdmin để thay thế URL file media:

    UPDATE wp_posts
    SET guid = REPLACE(guid, 'https://yourdomain.com/wp-content/uploads', 'https://media.yourdomain.com')
    WHERE post_type = 'attachment';

4. Kiểm tra và tối ưu hóa

  • Kiểm tra URL của file media: Đảm bảo các file tải từ hosting phụ (bắt đầu bằng https://media.yourdomain.com).
  • Cài đặt plugin cache: Tăng tốc độ tải.
  • Kích hoạt HTTPS: Đảm bảo hosting phụ sử dụng SSL để tránh lỗi tải file trên trình duyệt.

5. Tùy chọn nâng cao

  • Sử dụng CDN: Đưa file media vào CDN như Cloudflare hoặc BunnyCDN để tăng tốc toàn cầu.
  • Tự động tải lên hosting phụ: Dùng plugin hoặc cronjob để đồng bộ file mới từ WordPress.

6. Code

Nếu bạn muốn tự viết code để thêm chức năng giống WP Offload Media (đưa file media của WordPress lên một hosting hoặc dịch vụ lưu trữ khác), dưới đây là một hướng dẫn cơ bản. Mục tiêu là tự động tải file media mới lên hosting phụ hoặc dịch vụ lưu trữ khi upload qua WordPress.

6.1. Hook vào quá trình upload file của WordPress

Sử dụng wp_handle_upload để bắt sự kiện mỗi khi file được upload.

 

function custom_upload_to_remote($upload) {
// Đường dẫn file vừa upload
$file_path = $upload['file'];
$file_url = $upload['url'];
$file_type = $upload['type'];
// Upload file lên hosting phụ (hoặc dịch vụ lưu trữ)
$remote_url = upload_to_remote_hosting($file_path);if ($remote_url) {
// Thay đổi URL của file thành URL từ hosting phụ
$upload[‘url’] = $remote_url;// Xóa file gốc trên server (tuỳ chọn)
@unlink($file_path);
}return $upload;
}
add_filter(‘wp_handle_upload’, ‘custom_upload_to_remote’);

6.2. Hàm tải file lên hosting phụ

Dưới đây là một ví dụ cơ bản để upload file lên hosting phụ qua FTP:

function upload_to_remote_hosting($local_file) {
// Cấu hình FTP
$ftp_server = 'ftp.yourremotehost.com';
$ftp_user = 'yourusername';
$ftp_password = 'yourpassword';
$remote_dir = '/media/'; // Thư mục trên hosting phụ
// Kết nối FTP
$ftp_conn = ftp_connect($ftp_server);
if (!$ftp_conn) {
error_log(‘Cannot connect to FTP server.’);
return false;
}// Đăng nhập
$login = ftp_login($ftp_conn, $ftp_user, $ftp_password);
if (!$login) {
error_log(‘FTP login failed.’);
ftp_close($ftp_conn);
return false;
}// Bật chế độ passive
ftp_pasv($ftp_conn, true);// Tải file lên
$remote_file = $remote_dir . basename($local_file);
if (ftp_put($ftp_conn, $remote_file, $local_file, FTP_BINARY)) {
// Trả về URL của file trên hosting phụ
$remote_url = ‘https://media.yourdomain.com’ . $remote_file;
} else {
error_log(‘Failed to upload file to remote server.’);
$remote_url = false;
}// Đóng kết nối
ftp_close($ftp_conn);return $remote_url;
}


6.3. Xử lý URL file trong Media Library

Để đảm bảo các file đã upload lên hosting phụ có URL đúng, bạn cần thay đổi URL của file trong Media Library.

function custom_attachment_url($url, $post_id) {
     // Kiểm tra nếu file đã được lưu trên hosting phụ
     $remote_url_base = 'https://media.yourdomain.com';
     $metadata = wp_get_attachment_metadata($post_id);
if (isset($metadata['file'])) {
     return $remote_url_base . '/' . $metadata['file'];
     }return $url;
}
add_filter('wp_get_attachment_url', 'custom_attachment_url', 10, 2);

6.4. Di chuyển file cũ sang hosting phụ

Nếu bạn muốn di chuyển tất cả các file media đã tồn tại lên hosting phụ, hãy sử dụng một script PHP hoặc plugin để quét thư mục wp-content/uploads và tải từng file lên.

Ví dụ:

function migrate_old_files_to_remote() {
     $upload_dir = wp_get_upload_dir();
     $local_dir = $upload_dir['basedir'];
     $files = glob($local_dir . '/**/*.*'); // Tìm tất cả các file trong thư mục uploads
foreach ($files as $file) {
         $remote_url = upload_to_remote_hosting($file);if ($remote_url) {
         // Cập nhật URL file trong database
         global $wpdb;
         $wpdb->update(
         $wpdb->posts,
         ['guid' => $remote_url],
         ['guid' => $file]          );
         @unlink($file); // Xoá file gốc
         }
     }
}

6.5. Lưu ý

  • Kiểm tra bảo mật: Đảm bảo kết nối FTP hoặc API được mã hóa (FTPS, SFTP, HTTPS).
  • Xử lý lỗi: Thêm các bước kiểm tra lỗi trong quá trình upload file để tránh gián đoạn.
  • CDN Tích hợp: Bạn có thể mở rộng để tích hợp với dịch vụ CDN như AWS S3, Cloudflare hoặc BunnyCDN thay vì chỉ dùng FTP.
Rate this post
Logo TVDSEO

Facabook: https://facebook.com/tvdseo

Email: [email protected]

Call us E-mail

Dịch vụ

  • Dịch vụ viết bài
  • Dịch vụ backlink
  • Làm website
  • Quản lý website

Công cụ

  • Phần mềm SEO
  • Làm video
  • Dịch vụ Youtube
  • Dịch vụ Facebook

Kết nối

  • Liên hệ
  • Tư vấn
  • Hỗ trợ
  • Hợp tác

DMCA.com Protection Status

©
2025 UX Themes

Terms Privacy Cookies