WPML

WPML 黏性链接可防止页面和文章之间的链接失效,即使页面移动或重命名也是如此。


在 WordPress 中更改页面地址非常容易,但这会导致所有传入链接失效(404 错误)。以下是可能导致 404 错误的一些操作:
  • 更改页面的父级
  • 更改别名
  • 更改站点的固定链接结构

WPML 可防止 URL 更改导致传入链接失效。当您创建链接时,WPML 会自动将其变为黏性链接。它不会存储该页面(在创建链接时)的 URL,而是存储页面编号。无论您进行什么操作,该编号都永远不会改变。

然后,在显示页面时,WPML 会插入您所链接到的页面的固定链接。每当 URL 发生更改时,所有链接到该 URL 的页面都会立即更新,并链接到正确的地址。

以下屏幕截图显示了启用黏性链接后,内部链接在数据库中的样子。

在区块编辑器中查看由 WPML 转换为黏性链接的链接
在区块编辑器中查看由 WPML 转换为黏性链接的链接
在经典编辑器中查看由 WPML 转换为黏性链接的链接
在经典编辑器中查看由 WPML 转换为黏性链接的链接

您的用户永远不会看到这些“奇怪”的链接。相反,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 );
}

作者:Amir · 最后更新时间:2025年2月19日