Lỗi slug trùng trong WordPress giữa media (ảnh) và post/page

Để xử lý lỗi slug trùng trong WordPress giữa media (ảnh) và post/page, bạn có thể sử dụng các plugin có sẵn hoặc thực hiện một số thay đổi trong mã nguồn. Dưới đây là một số hướng dẫn:

Sử dụng Plugin:

  1. Allow Media Rename: Đây là một plugin có thể giúp bạn đổi tên (slug) của file media một cách dễ dàng. Bạn có thể cài đặt và kích hoạt plugin này từ trang Quản lý Plugin trong dashboard WordPress của bạn. Sau khi cài đặt, bạn có thể vào thư viện media, chọn một file media cần đổi tên, và thay đổi slug để tránh trùng lặp với post/page.

Sửa đổi Mã Nguồn:

  1. Thêm Prefix vào Slug Media (Ảnh): Bạn có thể sửa đổi slug của media để thêm một tiền tố (prefix) riêng biệt. Điều này sẽ giúp tránh xung đột với slug của post/page. Dưới đây là một ví dụ về cách thực hiện:

    Mở file functions.php của theme hiện tại hoặc theme con:

    function custom_media_slug_prefix($slug) {
        global $post;
    
        if ($post->post_type == 'attachment') {
            $slug = 'media-' . $slug; // Thêm tiền tố "media-"
        }
    
        return $slug;
    }
    add_filter('wp_unique_post_slug', 'custom_media_slug_prefix', 10, 2);
    

    Đoạn mã trên sẽ thêm tiền tố “media-” vào slug của media để tránh xung đột với post/page.

  2. Kiểm tra và Đổi Tên Trong Trường Hợp Trùng Lặp: Bạn cũng có thể tạo một quy trình kiểm tra và tự động đổi tên khi xảy ra xung đột slug. Để làm điều này, bạn cần thêm các đoạn mã kiểm tra xung đột và thay đổi slug tương ứng. Dưới đây là một hướng dẫn tổng quan:

    Mở file functions.php của theme hiện tại hoặc theme con:

    function check_and_resolve_slug_conflict($slug, $post_ID, $post_status, $post_type) {
        if ($post_type == 'attachment') {
            $existing_post = get_page_by_path($slug, OBJECT, $post_type);
    
            if ($existing_post) {
                $new_slug = wp_unique_post_slug($slug, $post_ID, $post_status, $post_type);
                wp_update_post(array('ID' => $post_ID, 'post_name' => $new_slug));
            }
        }
    
        return $slug;
    }
    add_filter('wp_unique_post_slug', 'check_and_resolve_slug_conflict', 10, 4);
    

    Đoạn mã trên sẽ kiểm tra xem nếu slug của media trùng với post/page đã tồn tại, nó sẽ tự động thay đổi slug của media để tránh xung đột.

Nhớ rằng, việc sửa đổi mã nguồn có thể ảnh hưởng đến tính ổn định và tương thích của website. Trước khi thực hiện bất kỳ thay đổi nào, hãy sao lưu dữ liệu và thực hiện thử nghiệm trên môi trường phát triển trước.