我正在尝试将链接从linkshare转换为itunes链接唯一的方法就是在我的wordpress主题标题
中插入这行jQuery代码$(document).ready(function() {
// READ THIS!!
// START OF REQUIRED CHANGES
// you MUST change this value to one for your georiot account TSIDs
var tsid = 2062;
// END OF REQUIRED CHANGES
// DO NOT MODIFY BELOW THIS LINE
convertToGeoRiotLinks(tsid);
});
function convertToGeoRiotLinks(tsid) {
var numberOfLinks = document.links.length;
var currentLinkIndex = 0;
for (currentLinkIndex = 0; currentLinkIndex < numberOfLinks; currentLinkIndex++) {
var currentLink = document.links[currentLinkIndex];
var linkType = getLinkType(currentLink.href);
if (linkType == "apple" || linkType == "amazon") {
currentLink.href = "http://target.georiot.com/Proxy.ashx?TSID=" + tsid + "&GR_URL=" + encodeURIComponent(currentLink.href);
} else if (linkType == "linkshare" || linkType == "tradedoubler" || linkType == "dgmperf") {
var itunesUrl = extractItunesLinkFromAffiliateUrl(currentLink, linkType);
if (itunesUrl != "") {
currentLink.href = "http://target.georiot.com/Proxy.ashx?TSID=" + tsid + "&GR_URL=" + itunesUrl;
}
} else
continue;
}
}
function extractItunesLinkFromAffiliateUrl(currentLink, linkType)
{
if (currentLink.href.indexOf("?") > 0)
{
var arrParams = currentLink.href.split("?");
var arrURLParams = arrParams[1].split("&");
var arrParamNames = new Array(arrURLParams.length);
var arrParamValues = new Array(arrURLParams.length);
var i = 0;
for (i=0;i < arrURLParams.length;i++)
{
var sParam = arrURLParams[i].split("=");
arrParamNames[i] = sParam[0];
if (sParam[1] != "") {
arrParamValues[i] = sParam[1];
if (linkType == "tradedoubler" && arrParamNames[i] == "url") {
return arrParamValues[i];
} else if (linkType == "linkshare" && arrParamNames[i] == "RD_PARM1") {
return arrParamValues[i];
} else if (linkType == "dgmperf" && arrParamNames[i] == "u") {
return arrParamValues[i];
}
} else
arrParamValues[i] = "";
}
}
return "";
}
/* Returns link type: unknown, amazon, apple, linkshare, dgm, tradedoubler
*/
function getLinkType(currentLinkHref) {
var appleRegex = /itunes.apple.com'/'S+id[0-9]+/i;
var tradeDoublerRegex = /clk[uk]*'.tradedoubler'.com'S*'?'S*url=[https%3A%2F%2F|http%3A%2F%2F]*'itunes'.apple'.com/i;
var linkshareRegex = /click'.linksynergy'.com'S*?'S*RD_PARM1=[https%3A%2F%2F|https%253A%252F%252F|http%253A%252F%252F|http%3A%2F%2F]*'itunes'.apple'.com/i;
var dgmPerfRegex = /t.dgm-au.c'S+'?+'S*u=[https%3A%2F%2F|http%3A%2F%2F|https%253A%252F%252F|http%253A%252F%252F]*'itunes'.apple'.com/i;
var amazonRegex = /'.amazon'./;
if (appleRegex.test(currentLinkHref))
return "apple";
else if (tradeDoublerRegex.test(currentLinkHref))
return "tradedoubler";
else if (linkshareRegex.test(currentLinkHref))
return "linkshare";
else if (dgmPerfRegex.test(currentLinkHref))
return "dgmperf";
else if (amazonRegex.test(currentLinkHref))
return "amazon";
else
return "unknown";
}
加载时,结果是页面头中的离线代码如何正确地做到没有任何冲突,谢谢
在WordPress中正确的方法是使用wp_register_script()
和wp_enqueue_script()
来确保你满足所有的依赖,并且不会引起任何冲突。
你应该在你的主题目录中创建一个文件,并将你的。js代码保存在那里,为了便于示例,我们称之为custom.js。然后,您需要打开主题中的functions.php文件并添加以下代码:
function my_custom_javascript() {
wp_enqueue_script( 'script-name', get_template_directory_uri() . 'custom.js', array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_custom_javascript' );
这将告诉WordPress,你希望它查找一个位于主题目录下的名为"custom.js"的javascript文件。然后它添加了一个钩子到wp_enqueue_scripts
,这是当WordPress查找你需要的所有脚本并将它们包含在你的页面中,并包括你的自定义脚本连同其余的。
它看起来像你可能有一个jQuery依赖-你可以让WordPress知道你的自定义脚本依赖于jQuery添加'jquery'
作为一个项目在wp_enqueue_script()
数组,所以它看起来像这样:
wp_enqueue_script( 'script-name', get_template_directory_uri() . 'custom.js', array( 'jquery' ), '1.0.0', true );