Добавить URL для определенного слова на весь сайт

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

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

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

3 ответа

Здесь дерьмовое решение, но это лучше, чем ничего:

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

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

var word = " goat",
 replaceWord = " <a href="http://goat.com" target="_blank">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" target="_blank">' + textToReplace + '</a>');
}

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


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

document.onload = function() {
 var word = " goat",
 replaceWord = " <a href="http://goat.com" target="_blank">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>

licensed under cc by-sa 3.0 with attribution.