跳过导航
已更新
7 6 月, 2024

WPML黏性链接防止页面和帖子之间的链接中断,即使页面移动或重命名也是如此。

WordPress可以轻易更改页面地址,导致所有输入链接中断(404 错误)。 以下是可能导致 404 错误的几种操作:

  • 更改页面的父级
  • 更改弹头
  • 更改网站的永久链接结构

WPML可防止更改 URL 破坏输入链接。 创建链接时,WPML会自动将其设置为粘性链接。 它不存储该页面的 URL(在创建链接时),而是存储页码。 无论你做什么,这一点永远无法改变。

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

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

在区块编辑器中查看通过WPML变为置顶的链接
在区块编辑器中查看通过WPML变为置顶的链接
在经典编辑器中查看通过WPML变为置顶的链接
在经典编辑器中查看通过WPML变为置顶的链接

您的用户永远不会看到这些 “奇怪 “的链接。 相反,WPML会在显示页面时用当前的永久链接替换它们。

启用黏性链接模块后,您可以控制它处理哪些字符串。 为此,请转到 WPML 粘性链接 页面。

处理前的置顶黏性链接
处理前的置顶黏性链接

默认情况下,WPML会将帖子正文中的所有链接转为粘性链接。 您还可以将小工具和字符串中的链接变成粘性链接。

WPML可让您将所有常规链接批量替换为粘性链接。 它还会报告任何现有的断开链接,并帮助修复它们。

如果在创建某些内容后启用了 “黏性链接”,现有内容中的链接不会立即变成粘性链接。

黏性链接”管理屏幕会告诉你有多少内容可以包含普通(非粘滞)链接。 WPML可以扫描这些内容,并将所有链接转换为粘性链接。 单击 “扫描“按钮即可完成扫描

您可以随时点击 “将粘性 URL 还原永久链接”,将链接还原为常规(非粘性)永久链接。

链接到不同语言的网页

有时,您可能希望插入一个链接,指向另一种语言的页面。 由于黏性链接会自动调整链接,因此它可能会阻止您这样做,而是将链接调整为指向相同的语言。

要添加其他语言页面的链接,您需要在主题的functions.php 文件中添加以下过滤器。

Allow links to pages in other languages
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”)页面,因此使用了以下两行:

Example of specifying the list of URLs to allow linking to
$blacklist[] = 'documentation';

$blacklist[] = 'page-builders';

处理简码内容中的链接

默认情况下,黏性链接插件不会搜索由简码生成的链接。

如果您的页面上有生成类似”?page_id=XX“链接的简码,则该链接将显示给您的用户,而不会转换为永久链接。

要使用黏性链接 处理这些简码内容,请在 functions.php 文件中添加以下代码段:

Handle links inside shortcode content
if ( class_exists( 'WPML_Sticky_Links' ) ) {
	global $WPML_Sticky_Links;
	add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 );
}