Добавить 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>