Заменяем в записях все вхождения указанного текста

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

Редактировать в таком случае каждый пост будет очень нелогично и затратно по времени.

Задача решается очень простым образом – путем использования простейшей PHP-функции для замены текста:

function replace_text($text) {
	$text = str_replace('WordPress', '<strong>WordPress</strong>', $text);
	$text = str_replace('WordPress хаки', '<a href="#">WordPress хаки</a>', $text);
	return $text;
}
add_filter('the_content', 'replace_text');

Эту функцию необходимо поместить в файл functions.php вашего шаблона.

В вышеуказанной функции я показал пример: все вхождения слова “WordPress” будут выделены жирным, а все вхождения словосочетания “WordPress хаки” превратятся в ссылку.

По аналогии можно делать одновременно сколько угодно таких замен.

  2 Мне понравилось!

Koммeнтapии (25):

  1. Imho, проще сделать дамп и пробежаться по нему автозаменой

  2. Проще будет конечно добавить эту функцию, но лучше автозамену в дампе БД сделать, времени займет чуток побольше, конечно если база не 30 метров.
    Блог супер, подписался на РСС.
    Хотелось бы что бы в следующих статьях вы затронули тему таксономии, в том числе и для 3 версии WP. Интересно очень как создавать на WP каталоги чего-нибудь, к примеру каталог организаций или вакансий.

  3. подскажите, как выкрасить в красный цвет.
    понимаю, что вопрос сверхламерский, но мне проще задать, чем день в поисках проводить.
    итак, я хочу сделать одну букву на сайте жирным красным. скажем, это буква “я”.
    и вопрос еще, для каждого регистра отдельно прописывать нужно?
    заранее благодарю

    • итак, я хочу сделать одну букву на сайте жирным красным. скажем, это буква “я”.

      Строка замены будет такой:

      $text = str_replace('я', '<strong style="color:red">я</strong>', $text);

      и вопрос еще, для каждого регистра отдельно прописывать нужно?

      Да.

  4. Есть глупый вопрос..
    А оно в комментах тоже заменит?

  5. Спасибо за интересный хак, забрал себе! Такой вопрос. Есть ли возможность поставить ограничение на кол-во ссылок с одного поста. Пример: мы хотим залинковать словосочетание “чебурашка молодец”, а в посте оно три раза употребляется. Три ссылки с одинаковым анкором на одной странице выглядит перебором, мне так кажется. Как можно сделать 1 ссылку, а другие оставить как есть?

  6. Еще такой вопрос вдогонку к первому. Можно ли сделать так чтобы не учитывался регистр? Получается что “чебурашка молодец” перелинковывается , а “Чебурашка молодец” уже не хочет.

  7. Возникла проблема с картинками. Когда заменяю слово ссылкой, если это слово присутствует в описании картинки, картинка исчезает, а вместо нее в статье появляется код ссылки на эту картинку. Как это исправить?

  8. А потом, когда изменения будут внесены, функцию можно удалить? Или после её удаления всё вернётся на круги своя?

    • Нельзя, иначе всё вернётся на круги своя.

      • :( Тогда, к сожалению, мне это не подходит..
        Димокс, а нет ли возможности массовых изменений в постах? Понимаете, нужно менять много чего и много где.. и если для каждого изменения заводить функцию, да чтоб она висела постоянно.. не комильфо, имхо..

  9. Прошу прощения, за то, что поднимаю настолько старую тему, но есть такой вопрос.
    Хочу с помощью этой функции сделать так, что бы все слова которые начинаются с знака @ автоматически становились ссылками на твиттер аккаунт.
    Как сделать так, что бы функция меняла @(набор знаков) на @(набор знаков)〱/а>
    Надеюсь, удалось объяснить, что я хочу.

    • Строка замены будет такой:

      $text = preg_replace('#@([A-Za-z0-9_]+)#', '<a href="http://twitter.com/#!/$1">@$1</a>', $text);

      • огромное спасибо.
        всё получилось и работает
        я только добавил пробел перед @, что бы с e-mail адресами проблем не было и rel=”nofollow”, что бы Google не сильно напрягался по поводу количество внешних ссылок

  10. Dimox скажите пожалуйста
    как сделать чтобы функция работала в сайтбарах

Oтпpaвить кoммeнтapий

Облако тегов