【问题标题】:Add a class attribute to certain links为某些链接添加类属性
【发布时间】:2021-01-23 16:39:36
【问题描述】:

我的网站上有通过翻译代理的页面。我需要不翻译某些链接中显示的文本。我可以在链接中添加class="notranslate",翻译者会跳过它没问题。然而,在我实现翻译器之前,我已经创建了数百个页面,并且在我继续进行的过程中,我还会创建数百个页面——手动添加类并不是一个真正的选择。

我特别关注的链接是显示文本是文字 URL 或电子邮件地址的链接。翻译器没有触及href 属性,因此链接仍按预期工作,但显示的字符串被破坏。例如,在越南语中,“organization@domain.com”显示为“tổ chức@domain.com”,显示文本应为“domain.com/committees”的链接被翻译为“domain.com/commitaries”。 "

所以我正在寻找一种解决方案,它可以找到显示文本包含“@”或“/”的a 元素并添加class="notranslate"。我认为我不需要太强大的解决方案,否则我不会经常在链接显示文本中使用“@”或“/”,如果有的话,除非在这些情况下。我想这可以用 Javascript 来完成,但我充其量只是一个 JS 初学者。通过 Wordpress 在后端过滤内容的选项也可能是一个不错的解决方案。

【问题讨论】:

  • 这很大程度上取决于所使用的插件。
  • @TonyDjukic 怎么会这样?我可以毫无问题地在任何地方手动添加 notranslate 类。我只是想以某种方式自动化它。我正在使用 GTranslate 进行记录。
  • 自动化部分 - 插件是否提供某种钩子或过滤器?这就是为什么严重依赖于相关插件的部分。我假设.notranslate 类是由 GTranslate 提供的,所以他们也可能有一个自动化过程。它还取决于何时进行翻译,是在页面加载时即时进行还是将翻译记录在数据库中?如果它在运行中,您可以使用 jQuery 来处理它吗?这在很大程度上取决于特定插件如何完成它的工作。
  • @TonyDjukic 仔细观察,该插件实际上除了提供语言切换器之外什么都不做。这一切都由翻译代理处理。所以我可以通过 WP 过滤 the_content 没有问题。或者JS也可以。我认为这可能只是一个问题,即如何在链接显示文本中查找和替换我正在寻找的特定内容(仍然超出我的深度)。

标签: javascript wordpress language-translation


【解决方案1】:

使用 jquery 很简单,理想情况下需要在翻译插件之前加载。

注意:如果您已经像大多数 wordpress 主题一样加载了 jquery,那么您可以从该代码中删除第一行,其中包括 jquery 库。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript">
  $( document ).ready(function() {
    $("a").each(function() {
    
      let text = $(this).text();  
    
      if(text.includes("@")) {
        $(this).addClass('notranslate');
      }

      if(text.includes("/")) {
        $(this).addClass('notranslate');
      }
 
    })
});
</script>

【讨论】:

猜你喜欢
  • 2021-07-13
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2017-10-14
  • 2011-11-01
相关资源
最近更新 更多