是管理出站链接的好插件吗?

时间:2012-04-02 作者:keruilin

我到处寻找一个好的WordPress插件。我知道这是一个购物问题,但这是管理WordPress博客的一个重要方面,我惊讶地发现,没有比这更标准的选择了。具体来说,我需要一个插件来帮助:

在新选项卡/窗口中打开传出链接,批量处理维护良好,您使用什么?

2 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

我可以想出两种方法来实现这一点,任何一种都同样有效。在对它们的解释结束时,我将介绍每种方法的优缺点。

使用短代码

定义一个短代码,比如[wpse47706_link]. 你可能想给它一个href 属性对于站点上的每个链接,无论是内部链接还是外部链接,都要使用此选项。当您要输出实际文本时,解析url(parse_url()) 并获取主机名。将其与网站url进行比较。如果匹配,则应用一组规则,否则应用另一组规则。如果您觉得有必要,可以从仪表板控制这些内容(这是设置API,一个完全不同的主题)。

pros

<利用资源高效地进行全局控制很容易

cons

  • 无法单独控制来自不同地区的链接,特别是如果您想动态生成设置区域来解析网站的内容,控制可能会变得很棘手

    通过解析整个网站的内容,您可以获得网站上的每个链接。你必须弄清楚你在做什么,不想解析什么,可能还要做很多背景工作。。。这可能会变得很不愉快。当您拥有站点的所有内容时,分析它的链接(使用regex)并输出这些链接。由于获取它们的方法不同,根据站点上的位置来组织它们将相对简单,甚至可以降低到单个帖子或小部件中的链接级别。一旦您获得了所有这些,您就可以根据自己的喜好修改它们(然后在源代码中覆盖它们)。这可以通过某种带有复选框的管理界面来完成,也可以根据您定义的一组规则进行编程。

    pros

    <更精细的控制,直到单个链接级别,链接的输出效率更高(因为它不需要PHP,因为修改是直接对db进行的)
    • cons

      <直接修改内容(通常是个坏主意)如果你有很多链接,UI可能会变得难以管理。我可以想象,管理页面的负载会变得相当重。作者可能会覆盖更改,但不允许控制数据库中未存储的链接(然而,通过do_shortcode(), 另一种方法确实如此)希望这能给你一些考虑。。。两者都不是一个很好的选择,但我不会说两者都不好。就个人而言,我会选择短代码,但那是我。

SO网友:edelwater

就您定义的范围而言,这是一个定义正确过滤器的问题,尽管标题“管理出站链接”要宽得多。

针对您的范围:

a) 设置过滤器范围,例如“在发布内容中替换”:内容:请参阅http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content (但也可以查看bookmark\\u list、comment\\u text、get\\u comment\\u author\\u link、widget\\u text等其他地方进行筛选)

b) 定义正则表达式以搜索传出链接,例如:

const HTML_REF_REGEX2 = \'/<a(.*?)href=[\\\'"](.*?)[\\\'"](.*?)>(.*?)<\\\\/a>/i\';
c)从过滤器调用一个函数,该函数preg\\u replace\\u callback的找到的uri,例如

$r_content = preg_replace_callback(self::HTML_REF_REGEX2,
                array($this,\'DoStuffToToUri\'), $content);
d)在DoStuffToUri中,可以对外部链接执行任何操作,例如:添加no follow、添加空白、在每个链接前面放置favicon等,并使用您添加的内容“重建”传出链接,例如:

return \'<a\' . $arrUrlMatches[1] . \'href="\' . $arrUrlMatches[2]
                . \'"\' . $arrUrlMatches[3] .\'>\' . $arrUrlMatches[4] . \'</a>\';
但是。。。“管理外发链接”不仅仅意味着添加简单的过滤器:你需要一个所有外发链接的可浏览列表,包括HTTP状态返回和可能的重定向,它们在facebook链接、推特、google likes、pr、alexa评级等方面的价值,自动禁用404,调用它的位置,以便你可以单击和编辑外发url,等等。。。

p、 s.在验证传出链接时,您需要检查协议,因为可能会有很多拼写错误,例如:

if (!((substr($str_original_uri_uri,0,7) == \'http://\' ) ||
                  (substr($str_original_uri_uri,0,8) == \'https://\') ||
                  (substr($str_original_uri_uri,0,7) == \'file://\' ) )
                )
            {
                return false;
            }
以及传出链接“文本”区域内的内容(如果您想更改传出链接“内容”内的内容(可能是奇怪的内容),例如:

if (strstr(trim($str_original_uri_display_text), \'<\'))
            {
                return false;
            }
您可能还想排除某些文件类型,例如:

$str_original_uri_type_extension
                = EdlUtils::GetUriExtension($str_original_uri_uri, \'.\', 1, 1);
            if ($str_original_uri_type_extension != false)
            {
                if (stristr($this->mStrNotAllowedExtensions,
                    $str_original_uri_type_extension) != false)
                {
                    $bool_href_valid=false;
                }
            }
您可能还想记录被排除的内容,以便在需要时对其进行“更正”。

p、 p.s.替换代码位:http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-metadata.php

结束
是管理出站链接的好插件吗? - 小码农CODE - 行之有效找到问题解决它

是管理出站链接的好插件吗?

时间:2012-04-02 作者:keruilin

我到处寻找一个好的WordPress插件。我知道这是一个购物问题,但这是管理WordPress博客的一个重要方面,我惊讶地发现,没有比这更标准的选择了。具体来说,我需要一个插件来帮助:

在新选项卡/窗口中打开传出链接,批量处理维护良好,您使用什么?

2 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

我可以想出两种方法来实现这一点,任何一种都同样有效。在对它们的解释结束时,我将介绍每种方法的优缺点。

使用短代码

定义一个短代码,比如[wpse47706_link]. 你可能想给它一个href 属性对于站点上的每个链接,无论是内部链接还是外部链接,都要使用此选项。当您要输出实际文本时,解析url(parse_url()) 并获取主机名。将其与网站url进行比较。如果匹配,则应用一组规则,否则应用另一组规则。如果您觉得有必要,可以从仪表板控制这些内容(这是设置API,一个完全不同的主题)。

pros

<利用资源高效地进行全局控制很容易

cons

  • 无法单独控制来自不同地区的链接,特别是如果您想动态生成设置区域来解析网站的内容,控制可能会变得很棘手

    通过解析整个网站的内容,您可以获得网站上的每个链接。你必须弄清楚你在做什么,不想解析什么,可能还要做很多背景工作。。。这可能会变得很不愉快。当您拥有站点的所有内容时,分析它的链接(使用regex)并输出这些链接。由于获取它们的方法不同,根据站点上的位置来组织它们将相对简单,甚至可以降低到单个帖子或小部件中的链接级别。一旦您获得了所有这些,您就可以根据自己的喜好修改它们(然后在源代码中覆盖它们)。这可以通过某种带有复选框的管理界面来完成,也可以根据您定义的一组规则进行编程。

    pros

    <更精细的控制,直到单个链接级别,链接的输出效率更高(因为它不需要PHP,因为修改是直接对db进行的)
    • cons

      <直接修改内容(通常是个坏主意)如果你有很多链接,UI可能会变得难以管理。我可以想象,管理页面的负载会变得相当重。作者可能会覆盖更改,但不允许控制数据库中未存储的链接(然而,通过do_shortcode(), 另一种方法确实如此)希望这能给你一些考虑。。。两者都不是一个很好的选择,但我不会说两者都不好。就个人而言,我会选择短代码,但那是我。

SO网友:edelwater

就您定义的范围而言,这是一个定义正确过滤器的问题,尽管标题“管理出站链接”要宽得多。

针对您的范围:

a) 设置过滤器范围,例如“在发布内容中替换”:内容:请参阅http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content (但也可以查看bookmark\\u list、comment\\u text、get\\u comment\\u author\\u link、widget\\u text等其他地方进行筛选)

b) 定义正则表达式以搜索传出链接,例如:

const HTML_REF_REGEX2 = \'/<a(.*?)href=[\\\'"](.*?)[\\\'"](.*?)>(.*?)<\\\\/a>/i\';
c)从过滤器调用一个函数,该函数preg\\u replace\\u callback的找到的uri,例如

$r_content = preg_replace_callback(self::HTML_REF_REGEX2,
                array($this,\'DoStuffToToUri\'), $content);
d)在DoStuffToUri中,可以对外部链接执行任何操作,例如:添加no follow、添加空白、在每个链接前面放置favicon等,并使用您添加的内容“重建”传出链接,例如:

return \'<a\' . $arrUrlMatches[1] . \'href="\' . $arrUrlMatches[2]
                . \'"\' . $arrUrlMatches[3] .\'>\' . $arrUrlMatches[4] . \'</a>\';
但是。。。“管理外发链接”不仅仅意味着添加简单的过滤器:你需要一个所有外发链接的可浏览列表,包括HTTP状态返回和可能的重定向,它们在facebook链接、推特、google likes、pr、alexa评级等方面的价值,自动禁用404,调用它的位置,以便你可以单击和编辑外发url,等等。。。

p、 s.在验证传出链接时,您需要检查协议,因为可能会有很多拼写错误,例如:

if (!((substr($str_original_uri_uri,0,7) == \'http://\' ) ||
                  (substr($str_original_uri_uri,0,8) == \'https://\') ||
                  (substr($str_original_uri_uri,0,7) == \'file://\' ) )
                )
            {
                return false;
            }
以及传出链接“文本”区域内的内容(如果您想更改传出链接“内容”内的内容(可能是奇怪的内容),例如:

if (strstr(trim($str_original_uri_display_text), \'<\'))
            {
                return false;
            }
您可能还想排除某些文件类型,例如:

$str_original_uri_type_extension
                = EdlUtils::GetUriExtension($str_original_uri_uri, \'.\', 1, 1);
            if ($str_original_uri_type_extension != false)
            {
                if (stristr($this->mStrNotAllowedExtensions,
                    $str_original_uri_type_extension) != false)
                {
                    $bool_href_valid=false;
                }
            }
您可能还想记录被排除的内容,以便在需要时对其进行“更正”。

p、 p.s.替换代码位:http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-metadata.php

相关推荐

Wordpress URL error for links

我的数据库中有以下内容siteurl subdomain.example.com home subdomain.example.com 当我尝试转到某些页面时,页面会转到subdomain.example.com/services/subdomain.example.com这有什么原因吗?由于这个奇怪的错误,我也无法进入wp管理,我不明白为什么会发生这种情况?我尝试用更改数据库中的值http:// 也已经预先准备好了。如有任何建议,我们将不胜感激。