WPML Sticky Links ngăn chặn các liên kết giữa các trang và bài viết bị hỏng, ngay cả khi các trang bị di chuyển và đổi tên.
WordPress làm cho việc thay đổi địa chỉ trang trở nên quá dễ dàng, dẫn đến tất cả các liên kết trỏ đến bị hỏng (lỗi 404). Dưới đây là một vài hành động có thể dẫn đến lỗi 404:
- Thay đổi trang cha
- Thay đổi slug
- Thay đổi cấu trúc đường dẫn tĩnh của trang web
WPML ngăn chặn các thay đổi trong URL làm hỏng các liên kết trỏ đến. Khi bạn tạo một liên kết, WPML tự động biến nó thành sticky. Thay vì lưu trữ URL của trang đó (tại thời điểm liên kết được tạo), nó lưu trữ số trang. Điều này không bao giờ thay đổi, bất kể bạn làm gì.
Sau đó, khi trang được hiển thị, WPML sẽ chèn đường dẫn tĩnh của trang mà bạn đang liên kết đến. Bất cứ khi nào URL thay đổi, tất cả các trang liên kết đến nó sẽ cập nhật ngay lập tức và sẽ liên kết đến địa chỉ chính xác.
Các ảnh chụp màn hình sau đây cho thấy các liên kết nội bộ trông như thế nào trong cơ sở dữ liệu, sau khi Sticky Links được bật.
Người dùng của bạn sẽ không bao giờ nhìn thấy những liên kết “kỳ lạ” này. Thay vào đó, WPML sẽ thay thế chúng bằng các đường dẫn tĩnh hiện tại khi hiển thị các trang.
Điều khiển Sticky links
Sau khi bạn bật module Sticky Links, bạn có thể kiểm soát các chuỗi mà nó xử lý. Để thực hiện việc này, hãy truy cập trang WPML → Sticky links.

Theo mặc định, WPML sẽ chuyển tất cả các liên kết trong phần thân bài viết thành các liên kết sticky. Bạn cũng có thể chuyển các liên kết trong widget và chuỗi thành các liên kết sticky.
WPML sẽ cho phép bạn thay thế hàng loạt tất cả các liên kết thông thường thành các liên kết sticky. Nó cũng sẽ báo cáo bất kỳ liên kết bị hỏng nào hiện có và giúp sửa chúng.
Nếu bạn đã bật Sticky Links sau khi tạo một số nội dung, các liên kết trong nội dung hiện có đó sẽ không ngay lập tức được chuyển thành các liên kết sticky.
Trang quản trị Sticky Links cho bạn biết có bao nhiêu nội dung có thể bao gồm các liên kết bình thường (không phải sticky). WPML có thể quét nội dung đó và chuyển đổi tất cả các liên kết thành các liên kết sticky. Nhấp vào nút Quét để thực hiện việc đó.
Bạn luôn có thể đưa các liên kết của mình trở lại thành các đường dẫn tĩnh thông thường (không phải sticky) bằng cách nhấp vào Revert sticky URLs to permalinks.
Liên kết đến các trang bằng một ngôn ngữ khác
Đôi khi, bạn có thể muốn chèn một liên kết đến một trang bằng ngôn ngữ khác. Vì Sticky Links tự động điều chỉnh các liên kết, nó có thể ngăn bạn làm điều này và thay vào đó điều chỉnh liên kết để trỏ đến cùng một ngôn ngữ.
Để có thể thêm liên kết đến các trang bằng ngôn ngữ khác, bạn cần thêm bộ lọc sau vào tệp functions.php của giao diện.
Cho phép liên kết đến các trang bằng ngôn ngữ khác
add_filter( 'wpml_sl_blacklist_requests', 'wpml_sl_blacklist_requests', 10, 2 );
function wpml_sl_blacklist_requests( $blacklist, $sitepress ) {
$blacklist[] = 'documentation';
return $blacklist;
}Trong mã trên, hãy sử dụng mảng $blacklist để chỉ định tất cả các slug URL cho các trang bằng ngôn ngữ gốc mà bạn muốn liên kết đến.
Trong ví dụ của chúng tôi, chúng tôi muốn liên kết đến phiên bản tiếng Anh của các trang “Documentation” (slug “documentation”) và “Page Builders” (slug “page-builders”), vì vậy chúng tôi sử dụng hai dòng sau:
Ví dụ về việc chỉ định danh sách các URL để cho phép liên kết đến
$blacklist[] = 'documentation'; $blacklist[] = 'page-builders';
Xử lý các liên kết bên trong nội dung shortcode
Theo mặc định, plugin Sticky Links không tìm kiếm các liên kết được tạo bởi các shortcode.
Nếu bạn có một shortcode trên trang của mình tạo ra một liên kết như ”?page_id=XX“, nó sẽ được hiển thị cho người dùng của bạn mà không được chuyển đổi thành đường dẫn tĩnh.
Để xử lý các nội dung shortcode này bằng Sticky Links, hãy thêm đoạn mã này vào tệp functions.php của bạn:
Xử lý các liên kết bên trong nội dung shortcode
if ( class_exists( 'WPML_Sticky_Links' ) ) {
global $WPML_Sticky_Links;
add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 );
}
