Функция the_content()
выводит содержимое текущего поста (записи, страницы или произвольного типа поста) в цикле.
Функция для использования внутри цикла WordPress. Если вам нужен контент не текущей, а определённой записи или страницы, то взляните на get_the_content().
Выводит полностью весь пост, если задействована на страницах:
single.php
),page.php
),single-{тип_поста}
).Выводит только часть контента поста, которая находится до тега <!--more-->
на следующих типах страниц:
category.php
,tag.php
,taxonomy.php
.search.php
,archive.php
,По поводу упомянутых файлов – не обязательно для отображения определённого типа страницы может задействоваться именно указанный файл, например для рубрик может использоваться и archive.php
, и index.php
, для лучшего понимания рекомендую посмотреть видеоурок про иерархию шаблонов.
the_content( $more_link_text = null, $strip_teaser = false )
<--more-->
? true
— нужно, false
— не нужно.Функция ничего не возвращает.
По сути в данной ситуации всё, что нам нужно сделать, это задать первый параметр функции.
the_content( 'Узнать подробнее →' );
В этот параметр вы даже можете передать заголовок записи/страницы функцией the_title(), вот так примерно:
the_content( 'Узнать подробнее про ' . the_title( '', '', false ) );
Если функция the_content()
работает не совсем так, как нам хотелось бы, например обрезает контент по тегу <!--more-->
, когда мы этого не хотим, или наоборот, не обрезает, когда хотим, то мы можем изменить это поведение функции при помощи глобальной переменной $more
.
Для этого нам нужно:
global $more;
the_content()
, присвоить ей значение 0 (отображать анонсы) или 1 (отображать целиком весь пост), например $more = 0;
.Пример:
global $more; while( have_posts() ) : the_post(); $more = 1; // отображаем полностью всё содержимое поста the_title(); // эта функция выводит заголовок the_content(); // выводим контент endwhile;
Подробнее про основной цикл читайте / смотрите видеоурок здесь.
Второй пример — возможно вы уже читали пост про прилепленные записи. Так вот, используя условный тег is_sticky(), мы можем сделать так, чтобы для прилепленных записей контент отображался целиком, а для всех остальных записей выводились только анонсы.
global $more; while( have_posts() ) : the_post(); if( is_sticky() ) : // проверяем, является ли текущая запись прилепленной $more = 1; // полный пост else : $more = 0; // анонс endif; the_title(); // заголовок the_content('Подробнее →'); // контент endwhile;
Как я уже говорил, этот фильтр очень популярен и используется во многих плагинах. Его даже используют для добавления ссылок на похожие записи в конце поста.
add_filter( 'the_content', 'true_related_posts_after_content', 25 ); function true_related_posts_after_content( $content ) { $related_posts = ''; // предположим, что это какой-то код, например код для вывода похожих записей return $content . $related_posts; // добавляем сразу после содержимого поста }
Очень рекомендую обратить на этот фильтр внимание, так как благодаря ему WordPress делает с контентом страницы очень много всего перед выводом, например:
:)
в смайлики.<p>
и переносов строки <br>
.<p>...</p>
, если да, то удаляет этот тег.<p>
.<img>
и <iframe>
, чтобы добавить к ним атрибуты srcset
, sizes
и loading
, которые могли не существовать на момент создания поста.https://
, то заменяет все http://
на https://
в контенте.Если для вывода контента вы используете например функцию get_the_content(), то ничего из этого применяться не будет!
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Добрый вечер, Михаил
Я Бы хотел у вас поинтересоваться, по поводу фильтра the_content дело в том что он выводит отфильтрованную информацию, а как сделать что бы он её в переменной сохранил, а я сам в итоге вывел где хочу ?...
Объясню ситуацию, дело в том что я пользуюсь Метабоксами, и в них я создаю Визвиг блоки, они работают как часики, но проблема в том что в них не работают шорткоды пока не отфильтрую. Когда я фильтрую данные всё работает замечательно, но рождается проблема, заключаеться она в том что: Все переменные я получаю вначале цикла и убиваю в конце. И в итоге я просто раскладываю переменные там где они должны лежать... Надеюсь не запутал вас.
Суть вопроса: Как вернуть(return) отфильтрованные данные, а не вывести.
Спасибо, у вас один из самых качественных блогов по WP =)
Добрый вечер! Благодарю :)
Вот код:
Спасибо большое, вы меня очень выручили
Подскажите пожалуйста, как получить содержимое поста по id с удалением того, что стоит перед
?
Добрый день! Пример так:
Спасибо за информацию - очень помогло!
Пожалуйста!