【问题标题】:Wordpress plugin to deactivate links temporarilyWordpress 插件可暂时停用链接
【发布时间】:2020-02-24 15:11:28
【问题描述】:

我正在寻找解决方案(猜想它必须是 wordpress 插件)以解决问题。

我正在使用 WP 发布许多网站 - 其中一些网站具有指向尚未发布的页面的内部链接(已经通过 html 插入)。

我的目标是从发布 URL 的角度来看,这些链接不是“活动的”(因为那样的话它们会导致 404,因为方向站点尚未在线)。我希望它们在链接的“目标”发布之前以某种方式处于非活动状态或停用状态。

我尝试了断开链接检查器,但它不起作用。

问候

【问题讨论】:

  • 没有我知道的插件,您可以按照this answer 中的描述编写 javascript 来检查链接,然后如果它在 400 秒内返回响应,请从链接中删除 href。跨度>
  • 但我不需要链接完全消失 - 它们应该在托管目标站点时再次出现。
  • 如果你有javascript,那么当浏览器呈现页面时,这将发生在前端。每次有人加载页面时,它都会检查死链接并将其删除,一旦链接处于活动状态,它们就会自动返回。您还需要过滤掉链接以仅检查内部链接,可能也只检查您包装 the_content() 的任何 div 内的链接
  • @mrben522 谢谢 - 每次页面呈现时检查这个似乎是个好主意。你能提供一段代码来执行这个函数吗?

标签: wordpress plugins hyperlink internals


【解决方案1】:

这样的事情应该可以工作。理想情况下,一旦您知道所有链接都应该工作,那么您将有一些方法来更改包装类,以便永远发生这种情况。将#contentwww.yourdomain.com 替换为适当的值。另外我假设你已经加载了 jQuery,因为这是一个 wordpress 网站。此外,如果您使用的是 ES6,请根据需要转换为使用 let/const 和箭头函数。

jQuery(function ($) {
    $(document).ready(function() {
        $('#content').find('a[href*="www.yourdomain.com"]').each(checkLinkStatus(this));
    });

    function checkLinkStatus(linkObject) {
        var link = $(linkObject).attr('href');
        $.ajax({
            type: 'HEAD',
            url: link,
            success: function () {
                // page exists
            },
            error: function () {
                $(linkObject).attr('href', '#');
            }
        });
    }
});

【讨论】:

  • 谢谢!!!我只是在努力更换#content 部分。我到底用什么代替它?您说它与仅检查内部链接有关吗?
  • 用您的帖子内容所在的 div 的任何 ID 替换它
  • 谢谢 - 我试过几次,但每次都发生错误:( 是否需要指定 div?我不能只为页面上的整个内容做吗?如果外部链接是坏了,如果它们也被禁用也没关系。
  • 没必要,只是慢一点。您看到的错误是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2020-04-29
  • 1970-01-01
  • 2019-02-26
  • 2011-07-19
相关资源
最近更新 更多