Mask and Track Outbound Links

时间:2011-12-11 作者:Nikhil

我正在为客户创建wordpress网站。

MY AIM:

该网站将有来自不同网站的产品链接。这些链接实际上是网站和服务的附属链接。这些链接需要转换为http://www.example.com/go/123 或者类似的东西,当单击时,它们重定向到实际链接。下一个要求是跟踪传出链接的数量。

各位,wordpress专家,能告诉我任何可以完成这项工作的插件,甚至是我想要的东西吗。

我还搜索了这个网站以及wordpress上的插件目录。org,但尚未找到任何合适的插件。

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

我会让Google Analytics之类的东西通过事件跟踪之类的东西为您进行跟踪。看看Yoast的Google Analytics插件,它会让你很容易做到这一点。

否则Redirection 有利于创建重定向。当然,你可以看到每个被点击的次数。我已经使用这个插件多年了,它非常好。

如果要自动执行某些操作,则需要创建自定义重写规则和查询变量:

<?php
add_action( \'init\', \'wpse36168_add_rewrite_rule\' );
/**
 * Add our rewrite rule
 */
function wpse36168_add_rewrite_rule()
{
    add_rewrite_rule(
        \'^go/(.*?)$\',
        \'index.php?go=$matches[1]\',
        \'top\'
    );
}

add_filter( \'query_vars\', \'wpse36168_add_go_var\' );
/**
 * Tell WP not to strip out or "go" query var
 */
function wpse36168_add_go_var( $vars )
{
    $vars[] = \'go\';
    return $vars;
}
然后钩住template_redirect 如果捕获到该查询变量,则将用户抛出到其他URL。

<?php
add_action( \'template_redirect\', \'wpse36168_catch_external\' );
/**
 * Catch external links from our "go" url and redirect them
 */
function wpse36168_catch_external()
{
    if( $url = get_query_var( \'go\' ) )
    {
        wp_redirect( esc_url( $url ), 302 );
        exit();
    }
}
最后,你可以the_content 将所有外部链接自动替换为yoursite.com/go/someurlhere.com/asdf 链接。

<?php
add_filter( \'the_content\', \'wpse36168_replace_links\', 1 );
/**
 * Replace external links with our "go" links
 */
function wpse36168_replace_links( $content )
{
    $content = preg_replace_callback( \'%<a.*?href="(.*?)"[^<]+</a>%i\', \'wpse36168_maybe_replace_links\', $content );
    return $content;
}

function wpse36168_maybe_replace_links( $matches )
{
    if( ! preg_match( sprintf( \'#^%s#i\', home_url() ), $matches[1] ) )
    {
        $url = $matches[1];
        // http:// we\'ll add it later
        $url = str_replace( \'http://\', \'\', $url );
        $url = sprintf( \'/go/%s\', $url );
        return str_replace( $matches[1], home_url( $url ), $matches[0] );
    }
    else
    {
        return $matches[0];
    }
}
这是所有的烂摊子as a plugin.

结束

相关推荐

__FILE__ in WordPress plugins

我正在使用Sidebar Generator 在我所有的主题中。该插件在“plugins”目录下正常工作,但我想以某种方式将其嵌入到我的主题中,因此它不会显示在已安装的插件列表中。我刚刚复制了sidebar\\u生成器。php(幸运的是,整个代码都在一个文件中)到mytheme/插件,并将其包含在函数中。phprequire_once (MY_PLUGINS . \'/sidebar_generator.php\'); 现在,它适用于所有其他插件,但不适用于这个插件!这样,当我点击“侧栏”时

Mask and Track Outbound Links - 小码农CODE - 行之有效找到问题解决它

Mask and Track Outbound Links

时间:2011-12-11 作者:Nikhil

我正在为客户创建wordpress网站。

MY AIM:

该网站将有来自不同网站的产品链接。这些链接实际上是网站和服务的附属链接。这些链接需要转换为http://www.example.com/go/123 或者类似的东西,当单击时,它们重定向到实际链接。下一个要求是跟踪传出链接的数量。

各位,wordpress专家,能告诉我任何可以完成这项工作的插件,甚至是我想要的东西吗。

我还搜索了这个网站以及wordpress上的插件目录。org,但尚未找到任何合适的插件。

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

我会让Google Analytics之类的东西通过事件跟踪之类的东西为您进行跟踪。看看Yoast的Google Analytics插件,它会让你很容易做到这一点。

否则Redirection 有利于创建重定向。当然,你可以看到每个被点击的次数。我已经使用这个插件多年了,它非常好。

如果要自动执行某些操作,则需要创建自定义重写规则和查询变量:

<?php
add_action( \'init\', \'wpse36168_add_rewrite_rule\' );
/**
 * Add our rewrite rule
 */
function wpse36168_add_rewrite_rule()
{
    add_rewrite_rule(
        \'^go/(.*?)$\',
        \'index.php?go=$matches[1]\',
        \'top\'
    );
}

add_filter( \'query_vars\', \'wpse36168_add_go_var\' );
/**
 * Tell WP not to strip out or "go" query var
 */
function wpse36168_add_go_var( $vars )
{
    $vars[] = \'go\';
    return $vars;
}
然后钩住template_redirect 如果捕获到该查询变量,则将用户抛出到其他URL。

<?php
add_action( \'template_redirect\', \'wpse36168_catch_external\' );
/**
 * Catch external links from our "go" url and redirect them
 */
function wpse36168_catch_external()
{
    if( $url = get_query_var( \'go\' ) )
    {
        wp_redirect( esc_url( $url ), 302 );
        exit();
    }
}
最后,你可以the_content 将所有外部链接自动替换为yoursite.com/go/someurlhere.com/asdf 链接。

<?php
add_filter( \'the_content\', \'wpse36168_replace_links\', 1 );
/**
 * Replace external links with our "go" links
 */
function wpse36168_replace_links( $content )
{
    $content = preg_replace_callback( \'%<a.*?href="(.*?)"[^<]+</a>%i\', \'wpse36168_maybe_replace_links\', $content );
    return $content;
}

function wpse36168_maybe_replace_links( $matches )
{
    if( ! preg_match( sprintf( \'#^%s#i\', home_url() ), $matches[1] ) )
    {
        $url = $matches[1];
        // http:// we\'ll add it later
        $url = str_replace( \'http://\', \'\', $url );
        $url = sprintf( \'/go/%s\', $url );
        return str_replace( $matches[1], home_url( $url ), $matches[0] );
    }
    else
    {
        return $matches[0];
    }
}
这是所有的烂摊子as a plugin.

相关推荐

Redirection problems

请帮助我克服重定向问题。我需要在子域上工作,而不是在主域上工作,但这里两个域是不同的。我所做的是-将所有(website.com)文件复制到另一个子域(demo.websiteA.com),并根据wp配置更改数据库名称。php文件。但每当我尝试打开演示时。网站a。com它重定向到网站。com公司请帮帮我提前感谢