Возвращаем форматирование текста поста при использовании функции 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('Читать далее »'); ?>
использовать такой:
<?php get_the_content_with_formatting('Читать далее »'); ?>
Интересное решение :)
Только немного грузовое, хотя оно явно не для массового использования…
Коммент пишу, чтобы поблагодарить за этот пост. Помог мне четко понять наконец, как фильтры подключаются. А то какое-то мутное представление было до этого.
Бью челом! :)
Дело в том, что я не программист, и, если нахожу како-то решение определенной задачи, то его и использую, не разбираясь в тонкостях =)
Я думаю по теме. Подскажите, пожалуйста, как можно сделать следующее действие%
необходимо, н\что бы во всех местах сайта где встречается какая-то определенная буква, она автоматически заменялась на нее же, но с определенным форматированием. (Например, везде где встречается буква “я” она заменяется на “я“).
Буду очень благодарен.
Знаю один способ. Распишу в новом посте.
жду с нетерпением. подписался на pcc