WPML 黏性链接可防止页面和文章之间的链接失效,即使页面移动或重命名也是如此。
在 WordPress 中更改页面地址非常容易,但这会导致所有传入链接失效(404 错误)。以下是可能导致 404 错误的一些操作:
- 更改页面的父级
- 更改别名
- 更改站点的固定链接结构
WPML 可防止 URL 更改导致传入链接失效。当您创建链接时,WPML 会自动将其变为黏性链接。它不会存储该页面(在创建链接时)的 URL,而是存储页面编号。无论您进行什么操作,该编号都永远不会改变。
然后,在显示页面时,WPML 会插入您所链接到的页面的固定链接。每当 URL 发生更改时,所有链接到该 URL 的页面都会立即更新,并链接到正确的地址。
以下屏幕截图显示了启用黏性链接后,内部链接在数据库中的样子。
您的用户永远不会看到这些“奇怪”的链接。相反,WPML 在显示页面时会将它们替换为当前的固定链接。
黏性链接控件
启用黏性链接模块后,您可以控制它处理哪些字符串。为此,请前往 WPML → 黏性链接页面。

处理前的黏性链接
默认情况下,WPML 会将文章正文中的所有链接转换为黏性链接。您还可以将小工具和字符串中的链接转换为黏性链接。
WPML 允许您将所有常规链接批量替换为黏性链接。它还会报告任何现有的失效链接并帮助修复它们。
如果您在创建了一些内容后才启用黏性链接,则现有内容中的链接不会立即变为黏性链接。
黏性链接管理后台屏幕会告诉您有多少内容可能包含常规(非黏性)链接。WPML 可以扫描该内容并将所有链接转换为黏性链接。单击扫描按钮即可执行此操作。
您随时可以通过单击将黏性 URL 恢复为固定链接,将链接恢复为常规(非黏性)固定链接。
链接到不同语言的页面
有时,您可能希望插入指向其他语言页面的链接。由于黏性链接会自动调整链接,它可能会阻止您执行此操作,而是将链接调整为指向相同的语言。
为了能够添加指向其他语言页面的链接,您需要将以下过滤器添加到主题的 functions.php 文件中。
允许链接到其他语言的页面
add_filter( 'wpml_sl_blacklist_requests', 'wpml_sl_blacklist_requests', 10, 2 );
function wpml_sl_blacklist_requests( $blacklist, $sitepress ) {
$blacklist[] = 'documentation';
return $blacklist;
}在上述代码中,使用 $blacklist 数组来指定您要链接到的原始语言页面的所有 URL 别名。
在我们的示例中,我们希望链接到“Documentation”(别名“documentation”)和“Page Builders”(别名“page-builders”)页面的英语版本,因此我们使用以下两行代码:
指定允许链接的 URL 列表的示例
$blacklist[] = 'documentation'; $blacklist[] = 'page-builders';
处理简码内容中的链接
默认情况下,黏性链接插件不会搜索由简码生成的链接。
如果您的页面上有一个简码,生成了类似“?page_id=XX”的链接,它将直接显示给您的用户,而不会转换为固定链接。
要使用黏性链接处理这些简码内容,请将此代码片段添加到您的 functions.php 文件中:
处理简码内容中的链接
if ( class_exists( 'WPML_Sticky_Links' ) ) {
global $WPML_Sticky_Links;
add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 );
}
