выводит контент поста в WordPress
0.71
wp-includes / post-template.php
Функция возвращает содержимое текущего поста. Работает только в цикле.
the_content( $more_link_text = null, $strip_teaser = false)
- $more_link_text
- (строка) В этом параметре можно указать текст ссылки «Далее». Читайте также о других способах изменения текста ссылки.
- $strip_teaser
- (логическое) Нужно ли в полной версии пост обрезать то, что находится перел тегом
<--more-->
?true
— нужно,false
— не нужно.
Выводит полностью весь пост, если задействована на страницах:
- записей
single.php
, - страниц
page.php
, - произвольных типов постов
single-{тип_поста}
.
Выводит только часть контента поста, которая находится до тега <!--more-->
на следующих типах страниц:
- рубрики
category.php
, - метки
tag.php
, - архивы
archive.php
, - таксономии
taxonomy.php
.
Что делать, если у вас выводится полный текст поста, а вы хотите выводить анонсы со ссылкой «Далее»?
Всё, что нам потребуется сделать, это:
- Непосредственно перед циклом определить глобальную переменную
$more
. - Затем, уже непосредственно перед функцией
the_content()
присвоить ей значение 0 (отображать анонсы) или 1 (отображать целиком весь пост):$more = 0; // 0 - отобразить часть контента то тега more, 1 - отобразить весь контент
Пример:
global $more; while( have_posts() ) : the_post(); $more = 1; // отображаем полностью всё содержимое поста the_title(); // эта функция выводит заголовок the_content(); // выводим контент endwhile;
Читайте также описание функции the_title().
Второй пример — возможно вы уже читали пост про прилепленные записи. Так вот, используя условный тег is_sticky(), мы можем сделать так, чтобы для прилепленных записей контент отображался целиком, а для всех остальных записей выводились только анонсы.
global $more; while( have_posts() ) : the_post(); if( is_sticky() ) : // проверяем, является ли текущая запись прилепленной $more = 1; // полный пост else : $more = 0; // анонс endif; the_title(); // заголовок the_content('Подробнее →'); // контент endwhile;
Как вывести содержимое конкретного поста, зная его ID?
В отличие от функций get_the_title() и get_permalink() функции для вывода контента поста не имеют параметра с ID поста, так что нам не удастся получить или вывести контент какого-либо определенного поста вне цикла этим способом.
Другой способ — функция get_post().
$my_post_obj = get_post( $my_post_id ); // параметр функции - ID поста, содержимое которого нужно вывести echo $my_post_obj->post_content;
В этом примере (который выше) у нас выведется неотфильтрованный контент — в том самом виде, в котором он находится в базе данных. Так как очень многие плагины в WordPress применяют свои фильтры к контенту постов, то такой способ хорош, если вы хотите обойти этот фильтр.
Если фильтр the_content
в данном случае вам нужен, тогда наш пример изменится следующим образом:
$my_post_obj = get_post( $my_post_id ); $the_content_filtered = apply_filters( 'the_content', $my_post_obj->post_content ); echo str_replace( ']]>', ']]>', $the_content_filtered );
Фильтры
the_content_more_link — позволяет изменить кнопку «Далее»
Как же так, ведь текст кнопки «Далее» можно указать в первом параметре функции the_content()
? Дело в том, что там вы можете указать только текст ссылки, а фильтр the_content_more_link
позволяет полностью изменить её HTML код.
В качестве примера добавим к ссылке «Далее» HTML-атрибут target="_blank"
.
function true_target_blank_to_read_more( $more_link, $more_link_text ) { // Параметры, передаваемые из фильтра, сейчас мы их не будем использовать // $more_link_text - анкор (текст) ссылки по умолчанию // $more_link - HTML ссылки по умолчанию global $post; return ' <a href="' . get_permalink() . '#more-' . get_the_id() . '" target="_blank">Подробнее →</a>'; } add_filter( 'the_content_more_link', 'true_target_blank_to_read_more', 10, 2 );
the_content — изменяем содержимое поста перед выводом
Как я уже говорил, этот фильтр очень популярен и используется во многих плагинах. Его даже используют для добавления ссылок на похожие записи в конце поста.
function true_related_posts_after_content( $content ) { $related_posts = ''; // предположим, что это какой-то код, например код для вывода похожих записей return $content . $related_posts; // добавляем сразу после содержимого поста } add_filter( 'the_content', 'true_related_posts_after_content', 10, 1 );
Миша
В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.
Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.
Как вывести содержимое одной страницы (тело) на любые другие в WordPress? — Хабр Q&A
Соприкасаюсь с проектом (сайт) на WordPress, столкнулся с задачей — как подставлять контент одной страницы во все другие:Пример структуры сайта (многие сайты созданы по такому типу):
- Меню (…)
- Шапка (%заголовок% и %кнопка%)
- Контент (статичные данные: преимущества, наши работы, наши клиенты …)
- Подвал
Меню, шапка и подвал — статичные элементы относительно выводимого содержимого страницы.
Но контент — должен быть единым для любой созданной страницы.
Мои видения решения такого вопроса:
Можно поступить следующим образом:
1) Решение: При создании новой страницы настраивать заголовок и шапку в индивидуальном порядке (в интерфейсе WP), а тело (контент) заполнять путем «Скопировал — Вставил» нужного содержимого.
Минусы: Когда придет время менять данные, нужно будет открывать и корректировать тело каждой страницы.
2) Решение: Вмешательство в исходный код шаблона используемой темы
Минусы: Рядовому пользователю без помощи программиста (верстальщика) будет невозможно изменить выводимые данные на все страницы
3) Решение: Использовать плагин, который позволяет выводить нужную страницу (или заготовку, которую можно отредактировать как простую страницу отдельно) — на любую другую в рамках интерфейса WP (редактора страницы, например)
Минусы: О существовании таких плагинов я не знаю, есть риск не обнаружить такой плагин
Весь вопрос простым языком можно назвать таким:
Как средствами CMS WordPress настроить выдачу содержимого любой созданной страницы таким образом, чтобы в блок тела страницы промежуточно добавлять тело (содержимое) другой страницы.
- «любой созданной страницы» — существующие и новые страницы, например /index/, /contacts/, /kak-sdelat-svoimi-rukami/, /…/ и т.п.
- «другой страницы» — любая другая страница, из которой нам нужно брать только контент без заголовков и без подвала.
- «тело (содержимое)» — содержимое страницы, которое можно создать в интерфейсе редактора страницы WordPress
Content Views — оригинальный вывод постов на страницах WordPress
Плагин Content Views помогает решить задачу нестандартного оформления главной (и других) страниц блога. По умолчанию цикл (loop) в шаблоне сайта выводит посты блога друг за другом, начиная с самого нового. С помощью редактирования шаблона вы можете задать отображение даты, заголовка, категорий, автора и некоторых других параметров, но логику выборки постов особо поменять не получится (без добавления специального PHP кода и функций). Поэтому сегодняшний модуль может пригодиться многим новичкам и вордпресс разработчиками. Он позволяет настраивать отображение записей на главной и других страницах блога без каких-то специализированных знаний в программировании — скачать его можно отсюда. Название на странице репозитория какое-то слишком длинное «Query posts by category… and display posts on page in grid layout without coding — Content Views», если устанавливаете через админку вордпресс, попробуйте поискать по ключу Content Views. Требуемая версия WP выше 3.3 и до 4.2.2 (на момент написания поста), скачали модуль более 10тыс. раз, рейтинг практически максимальный!Возможности модуля достаточно большие и касаются не только главной страницы. С его помощью вы можете:
- отображать на главной посты по категориям в адаптивном дизайне;
- выводить записи блога в 2/3 колонки;
- выводить посты в нужном формате на определенной странице;
- выводить заметки по нужному тегу или автору;
- для отображаемых записей выбрать сортировку по заголовку или дате;
- заменить стандартную навигацию на более красивую;
- отображать в анонсах постов миниатюры разных размеров.
В принципе, вы могли бы настроить вывод последних постов по категории с помощью этого решения, о котором я когда упоминал (через WP_Query). Но не каждый пользователь в этом разберется, а плагин Content Views значительно упрощает задачу. Рассмотрим детальнее работу с модулем.
После установки в админке появится раздел плагина Content View Settings. Для создания нового элемента вывода постов кликаем по ссылке «Add New».
Здесь задача делится на 2 составляющих:
- Filter Settings — задание параметров выборки записей;
- Display Settings — формат отображения постов.
На первом шаге вы определяете тип записи — страница или пост. Можно при этом включить в список или исключить из него конкретные ID. Параметр Limit определяет число элементов.
Чуть ниже в Advanced filters происходит все самое интересное. На скриншоте вы видите как я отметил параметр Taxonomies и задал выборку по рубрикам. Дальше определил категорию из которой будут выводиться посты. Есть возможность сделать выборку по нескольким рубрикам или исключить какую-то из общего списка.
Кроме параметра Taxonomies есть:
- Status — статус отображаемых записей. Внимание! Если вы хотите показывать только опубликованные посты, то также задайте этот параметр (значение Publish).
- Order & Orderby — варианты сортировки.
- Search — отображение записей по поисковой фразе.
- Author — выборка по конкретному автору.
Вкладка Display Settings содержит настройки по внешнему виду блока:
Здесь есть три формата отображения: сетка (Grid), раскрывающийся список (Collapsible List), блоки с перелистыванием (Scrollable List). Для «сетки» можно выбрать число элементов в столбце и/или 2 колонки при отображении. Также отмечаете поля, которые требуется выводить у каждого элемента: дата, заголовок, текст, миниатюра. Можно выбрать открытие ссылки в новом окне.
Все эти настройки позволяют вам получить нужный вид отображения последних постов для главной или других страниц сайта.
После указания всех параметров, сохраните элемент. В меню «All views» можете увидеть список всех созданных блоков и шорткоды для их вставки. Размещать их можно на обычных страницах блога или в шаблоне через функцию вызова шорткода:
<?php echo do_shortcode('[pt_view]') ?> |
<?php echo do_shortcode(‘[pt_view]’) ?>
Напоследок хочется сказать, что у плагина есть Pro версия, которая обладает чуть большим числом опций и настроек. Стоимость ее 29 долларов за 1 или 89 за 5 сайтов. Тут добавляется 2 дополнительных варианта отображения Pinterest, Timeline, идет полная замена отображения последних постов в архивах категорий, тегов, авторов, появляется поддержка WooCommerce, добавляется механизм Drag & drop, а также много разных параметров для внешнего вида блоков. В принципе, бесплатной версии для решения задачи оригинального оформления главной страницы WordPress сайта мне хватило.
Понравился пост? Подпишись на обновления блога по RSS, Email или twitter!Вывести на конкретной странице — wordpress | Кабинет Веб-мастера
Бывают такие ситуации, когда на определенной странице сайта под управлением wordpress, нужно вывести какой-нибудь блок или текст. Для реализации этой задачи можно воспользоваться несколькими способами: другой шаблон для страницы, произвольные поля или проверка на нужную страницу прямо в коде (не создавая дополнительный шаблон). Последний способ мы сегодня и рассмотрим.
Для начала нам нужно узнать ID страницы. Делается это достаточно просто. Идем в список страниц, наводим мышку на нужную страницу, в левом нижнем углу появится ссылка. В этой ссылке ищем буквы: …post=1…. Вот эта цифра и есть id. Также можно посмотреть id находясь на нужной странице и в верхней плашке администратора наведя на Редактировать — снизу также отобразится ссылка с id. В любом случае это довольно просто.
Теперь идем в визуальный редактор или на ftp. Нам нужен шаблон page.php (хотя такую проверку можно делать не только в этом шаблоне). В нужном месте проверим, что страница имеет id=1 и выведем там приветственный текст:
<?php if ( is_page('1') ) { ?> Всем привет! <?php } ?>
Ничего сложного. Если нам нужно также сделать это для дочерних (вложенных) страниц, то стоит модифицировать код до такого:
<?php if (in_array('1', $post->ancestors) || is_page('1') ) { ?> Всем привет! <?php } ?>
Помимо прямого условия, можно задать альтернативный текст, если условие не выполнится. В нашем случае другой текст появится на всех страницах, кроме страницы с id=1.
<?php if (in_array('1', $post->ancestors) || is_page('1') ) { ?> Всем привет! <?php } else { ?> Всем пока! <?php } ?>
Вот пожалуй и все! Экспериментируйте и все получится!