Возвращаем форматирование текста поста при использовании функции get_the_content()

В одном из недавних заказов у меня была задача – вырезать определенный контент из содержимого поста при его выводе на главной. Для подобных вещей в WordPress предусмотрена функция get_the_content().

Чтобы было понятно, о чем речь, приведу пример ее использования:

$content = get_the_content();
$content = preg_replace('/вырезаем какой-то кусок текста/i', '', $content);
echo $content; // выводим отфильтрованный контент.

Однако при этом есть один минус – в выводимом таким образом контенте отсутствуют HTML-теги, которые есть в оригинале поста, т.е. к примеру, исчезают отступы между абзацами.

Задача решается применением следующей функции (ее необходимо поместить в файл functions.php):

function get_the_content_with_formatting ($more_link_text = '') {
	$content = get_the_content($more_link_text);
	$content = apply_filters('the_content', $content);
	// тут какие-то манипуляции с переменной $content
	echo $content;
}

Ну а в шаблоне вместо этого кода:

<?php the_content('Читать далее &raquo;'); ?>

использовать такой:

<?php get_the_content_with_formatting('Читать далее &raquo;'); ?>
  2 Мне понравилось!

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

  1. Интересное решение :)

    Только немного грузовое, хотя оно явно не для массового использования…

    Коммент пишу, чтобы поблагодарить за этот пост. Помог мне четко понять наконец, как фильтры подключаются. А то какое-то мутное представление было до этого.

    Бью челом! :)

    • Только немного грузовое, хотя оно явно не для массового использования…

      Дело в том, что я не программист, и, если нахожу како-то решение определенной задачи, то его и использую, не разбираясь в тонкостях =)

  2. Я думаю по теме. Подскажите, пожалуйста, как можно сделать следующее действие%
    необходимо, н\что бы во всех местах сайта где встречается какая-то определенная буква, она автоматически заменялась на нее же, но с определенным форматированием. (Например, везде где встречается буква “я” она заменяется на “я“).
    Буду очень благодарен.

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

Облако тегов