自动将附属标识符添加到 URL

Automatically prepend affiliate identifier to URLs

我想在我网站的 URL 中自动添加附属标识符。 例如,我有外部 URL,例如:

https://www.adairs.com.au/

https://bedthreads.com.au/products/caitlin-robson-footed-bowl

我的会员标识符因零售商而异,例如:

adairs.com.au: https://t.example.com/12345/t/54321?Url=

bedthreads.com.au: https://t.example.com/12121/t/21212?Url=

我需要这些在点击表单时自动添加到外部 URL 的开头:

https://t.example.com/12345/t/54321?Url=https://www.adairs.com.au/

https://t.example.com/12121/t/21212?Url=https://bedthreads.com.au/products/caitlin-robson-footed-bowl

我找到的最接近的解决方案是 here,但我在 java 方面经验不足,无法使其发挥作用。理想情况下,我还想在将来为其他零售添加其他自动附属标识符。

此外,是否可以在 PHP 中添加此内容? 任何帮助将不胜感激。谢谢。

    // attach a click even to all <a> elements
    $("a").click(function() {
        addAffiliate(this);
    });
    
    // adairs affiliate URL for redirect
    var adairsaffURL = "https://t.example.com/12345/t/54321?Url=";
    // bedthreads affiliate URL for redirect
    var bedthreadsaffURL = "https://t.example.com/12121/t/21212?Url=";
    
    // function called when link is clicked
    function addAffiliate(link) {
        // make sure this link is not to the current site and does not contain the affiliateURL
        if ((link.href).indexOf(adairs.com.au) < 0 && (link.href).indexOf(adairsaffURL) < 0){
            // update the link with the affiliateURL, the url encoded link, and the additional query string
            link.href = affiliateURL + escape(link.href);
        
}else if((link.href).indexOf(bedthreads.com.au) < 0 && (link.href).indexOf(bedthreadsaffURL) < 0){
                link.href = bedthreadsaffURL + escape(link.href);  
        }
        alert(link.href);
        // return true to follow the link
        return true;
    }

按照您的想法,我更新了您的代码以使其正常运行。请Run code snippet观看演示。

您只需要使用 .indexOf('adairs.com.au') 来检查 link 属于联盟计划,因此您将其附加到 affiliate URL

jQuery(document).ready(function($) {

  // adairs affiliate URL for redirect
  var adairsaffURL = "https://t.example.com/12345/t/54321?Url=";
  // bedthreads affiliate URL for redirect
  var bedthreadsaffURL = "https://t.example.com/12121/t/21212?Url=";

  // function called when link is clicked
  addAffiliate = function(link) {
    
    if (link.hash.substr(1).length > 0) return true;
    var redirectUrl = link.href;
    if (!redirectUrl || !isValidURL(redirectUrl)) return true;
    
    if (redirectUrl.indexOf('adairs.com.au') > 0) {
      redirectUrl = adairsaffURL + escape(redirectUrl);
    } else if (redirectUrl.indexOf('bedthreads.com.au') > 0) {
      redirectUrl = bedthreadsaffURL + escape(redirectUrl);
    }
    link.href = redirectUrl;
    return true;
  }

  $("a").click(function(event) {
    addAffiliate(this);
  });

  function isValidURL(string) {
    var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
    return (res !== null)
  };

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://www.adairs.com.au/">test adairs</a>
<br/><br/>
<a href="https://bedthreads.com.au/products/caitlin-robson-footed-bowl">test bed threads</a>
<br/><br/>
<a href="http://www.google.com">test not match adairs or bedthreads</a>
<br/><br/>
<a href="#dsdsd">test no link</a>

更新: 添加到 Wordpress 的功能。将以下内容放入主题中的 functions.php。

add_action('wp_footer', 'auto_affiliate_url');
function auto_affiliate_url()
{ 
?>

<script>
jQuery(document).ready(function ($) {

      // adairs affiliate URL for redirect
      var adairsaffURL = "https://t.example.com/12345/t/54321?Url=";
      // bedthreads affiliate URL for redirect
      var bedthreadsaffURL = "https://t.example.com/12121/t/21212?Url=";

      // function called when link is clicked
      addAffiliate = function(link) {
        
        if (link.hash.substr(1).length > 0) return true;
        var redirectUrl = link.href;
        if (!redirectUrl || !isValidURL(redirectUrl)) return true;

        if (redirectUrl.indexOf('adairs.com.au') > 0) {
          redirectUrl = adairsaffURL + escape(redirectUrl);
        } else if (redirectUrl.indexOf('bedthreads.com.au') > 0) {
          redirectUrl = bedthreadsaffURL + escape(redirectUrl);
        }
        link.href = redirectUrl;
        return true;
      }

      $("a").click(function(event) {
        addAffiliate(this);
      });

      function isValidURL(string) {
        var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
        return (res !== null)
  };


    });
</script>

<?php
}