我需要插入jquery代码到wordpress主题标题


I need to insert jquery code into wordpress theme header

我正在尝试将链接从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 );