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”)页面,因此使用了以下两行:
$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 ); }