Добавить URL к определенному слову на всем сайте

Я хочу иметь возможность связать любое слово по своему выбору с определенным URL, например: я хочу, чтобы слово "козел" ссылалось на " http://goat.com/" на всем сайте. Таким образом, все "козел" будут ссылаться на этот URL прямо на сайте.

Я использую WordPress, и я еще не нашел плагин для этого. Если бы я мог найти решение этой проблемы, я бы, скорее всего, создал плагин для этой функциональности.

Я знаю, как нацелить одно слово на одной странице. Но я бы хотел, чтобы он был на всех страницах и во всех словах на этих страницах (для этого я использовал JavaScript).

3 ответа

Решение

Вот дрянное решение, но оно лучше, чем ничего:

Я нашел здесь некоторый код, который ищет мир по всей странице, поэтому я скопировал, вставил его и изменил его.

Переменная replaceWord не может содержать ту же строку, что и слово, иначе она будет выполняться бесконечно.

var word = " goat",
    replaceWord = " <a href = 'http://goat.com'>goat</a>",
    queue = [document.body],
    curr
;
while (curr = queue.pop()) {
    if (!curr.textContent.match(word)) continue;
    for (var i = 0; i < curr.childNodes.length; ++i) {
        switch (curr.childNodes[i].nodeType) {
            case Node.TEXT_NODE : // 3
                if (curr.childNodes[i].textContent.match(word)) {
                    curr.innerHTML = curr.innerHTML.replace(word,replaceWord);
                }
                break;
            case Node.ELEMENT_NODE : // 1
                queue.push(curr.childNodes[i]);
                break;
        }
    }
}
Hello goat

<div>Look a goat</div>

Нечто подобное может работать на вас.

function replaceWithUri(textToReplace, element){
    element.innerHTML = element.innerHTML.replace(textToReplace, '<a href="http://www.' + textToReplace + '.com" >' + textToReplace + '</a>');
}

replaceWithUri('goat', document.getElementsByTagName('body')[0]);

Это может быть немного ресурсоемким, и replaceWord не может содержать ту же строку, что и слово, иначе это будет цикл навсегда.

document.onload = function() {
    var word = " goat",
        replaceWord = " <a href = 'http://goat.com'>goat</a>";

    while(document.body.innerHTML.indexOf(word) !== -1) {
        document.body.innerHTML = document.body.innerHTML.replace(word,replaceWord);
    }
}
Hello goat

<div>Look a goat</div>

Другие вопросы по тегам