Функция возвращает содержимое текущего поста. Работает только в цикле.
- $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 (отображать целиком весь пост):
Пример:
Читайте также описание функции the_title().
Второй пример — возможно вы уже читали пост про прилепленные записи. Так вот, используя условный тег is_sticky(), мы можем сделать так, чтобы для прилепленных записей контент отображался целиком, а для всех остальных записей выводились только анонсы.
Как вывести содержимое конкретного поста, зная его ID?
В отличие от функций get_the_title() и get_permalink() функции для вывода контента поста не имеют параметра с ID поста, так что нам не удастся получить или вывести контент какого-либо определенного поста вне цикла этим способом.
Другой способ — функция get_post().
В этом примере (который выше) у нас выведется неотфильтрованный контент — в том самом виде, в котором он находится в базе данных. Так как очень многие плагины в WordPress применяют свои фильтры к контенту постов, то такой способ хорош, если вы хотите обойти этот фильтр.
Если фильтр the_content
в данном случае вам нужен, тогда наш пример изменится следующим образом:
Фильтры
the_content_more_link — позволяет изменить кнопку «Далее»
Как же так, ведь текст кнопки «Далее» можно указать в первом параметре функции the_content()
? Дело в том, что там вы можете указать только текст ссылки, а фильтр the_content_more_link
позволяет полностью изменить её HTML код.
В качестве примера добавим к ссылке «Далее» HTML-атрибут target="_blank"
.
the_content — изменяем содержимое поста перед выводом
Как я уже говорил, этот фильтр очень популярен и используется во многих плагинах. Его даже используют для добавления ссылок на похожие записи в конце поста.
misha.blog
Всем привет! Сегодня на SEO Маяк я буду рассказывать о том как, правильно выводить анонсы статей на WordPress. О том, какие теги отвечают за их формирование и вывод на страницы, а также постараюсь подробно разъяснить, как вообще все это дело работает.
Вроде бы, чего нового можно здесь сказать, ведь в сети полно статей о теге more, да и тег the_excerpt довольно подробно описан.
Но как я понял из писем читателей, далеко не все до конца понимают, по каким принципам строится работа вышеперечисленных функций WordPress.
За последнее время, в мой адрес поступило много просьб рассказать о том, как убрать злополучные […] на конце анонсов статей и заменить их на привычные: «Читать далее», «Читать полностью» или объяснить почему не работает тег more и т.д.

Вот я и решил написать этот пост, в помощь моим читателям и всем начинающим веб-мастерам.
А если Вы дочитаете статью до конца, то узнаете как подружит теги more и the_excerpt и как организовать их совместное использование.
А начну я, как не странно, с мифов про тег more, которыми полна поисковая выдача. Поехали!
Мифы о теге more
Миф №1. Тег more создает дубли страниц.
Мне не раз задавали вопросы, типа — как избавиться или чем заменить тег more, чтобы он не создавал дубли страниц.
Полная чушь! Тег more является обычным якорем и создавать дубли он в принципе не может. Если следовать логике вопроса, то все якорные ссылки на сайте создают дубли. У меня на блоге около 40 — 60 якорных ссылок, конечно не считая самого more. Это что получается, все страницы, на которые ведут данные ссылки — дубли? Смех да и только.
Миф №2. Ключевые слова в теге more способствуют продвижению.
Бродя по просторам всемирной паутины я не раз встречал сайты, на которых вместо общепринятых анкоров тега more, таких как: «Далее», «Читать Далее» или «Читать полностью», используются анкоры, содержащие ключевые слова.
В HTML режиме редактора WordPress это выглядит так:
<--moreКлючевое слово-->
При виде сей «seo-карикатуры», у меня всегда появлялась улыбка на лице и я даже испытывал некоторое сочувствие к веб-мастерам, которые не жалея своего труда и времени, вписывали ключи в тег more.
Я даже одной девушке веб-мастерице написал в комментариях о бесполезности сего метода продвижения, на что мне был дан весьма развернутый ответ с упором на мою бестолковость. Я не стал больше ничего писать, но хотелось бы ей сказать следующее:
«Девушка, а вы давно заглядывали в файл robots.txt вашего ресурса? А ведь у Вас там стоят запреты на индексацию: категорий, постраничной навигации, архивов и т.д.»
Очень даже правильные директивы, призванные на борьбу с частичными дублями контента. Но тогда какой смысл писать ключи на страницах запрещенных к индексации? Продолжать не буду. Идем дальше.
Тег the_excerpt()
Наверное некоторые начинающие веб-мастера даже не подозревают о существовании тега the_excerpt.
И что это за тег такой, ведь нет такой кнопки в стандартном редакторе WordPress? Как он тогда выводит анонсы статей?
Примерно такими вопросами я озадачился, когда в свое время первый раз столкнулся с использованием в шаблоне тега the_excerpt.
Как строится работа данной функции? Допустим, в моей теме для вывода анонсов используется тег the_excerpt. В файлах шаблона, таких как: index.php, category.php, arhive.php и т.д, он будет выглядеть так:
<?php the_excerpt(); ?>
В скобки можно добавлять различные параметры, но об этом я расскажу как-нибудь в другой раз, так что не примените подписаться на обновления блога.
Я написал статью и опубликовал ее, конечно не забыв поставить тег more в нужное место. Что в данном случаи происходит… Тег the_excerpt() отправляет запрос в свой «центр управления», который находиться по адресу /wp-includes/post-template.php.
Центр управления принимает сигнал, обрабатывает его, проверяет его на наличие дополнительных директив от файла funtions.php и если таковых нет, то дает указание WordPress вывести анонс длиной в 55 слов.
Стоп! Почему 55 слов? Я ведь поставил тег more на 5 абзаце и в анонсе должно быть не 55 слов, а как минимум 100?
Дело в том, что функция the_excerpt() игнорирует тег more, так сказать, он для нее не авторитет и руководствуясь своими собственными соображениями, которые заложены в функцию по умолчанию, выводит анонс в 55 слов.
При этом в самом конце она обязательно проставляет свой «фирменный знак», в виде […], а такие привычные и приятные глазу «Читать далее» или Читать полностью» просто исчезают в небытие.
Злой какой-то этот тег и «Мама» его тоже злая! Но на самом деле тег the_excerpt вовсе не злой, а призван он выполнять самые благие функции, просто его неправильно используют.
Внимание! Тег the_excerpt способен выводить уникальные анонсы статей!
Как это так? Разве такое возможно? Он что сам анонсы пишет?
Конечно ничего он не пишет. Вернемся к тому моменту, когда я опубликовал новенький пост.
Итак, тег отослал сигнал в свой центр управления, последний, обрабатывая данные, в первую очередь проверяет статью на наличие цитаты и если такой нет, то только после того он запрашивает дополнительные сведения из файла functions.php, а если и там пусто, то функции ничего не остается, как вывести анонс по заложенным по умолчанию в нее параметрам.
Как с помощью тега the_excerpt вывести уникальные анонсы статей
Тег the_excerpt действительно способен выводить уникальные анонсы статей. Давайте разберемся как это дело реализовать.
Открываем любую запись, в самом верху страницы жмем на вкладку «Настройки экрана» и ставим галочку возле пункта «Цитата»:
После проведенных манипуляций, ниже редактора должен появится новый раздел:

В появившиеся поле вписываем краткое описание статьи или любой другой уникальный текст.
И вот оно счастье! Анонс стал полностью уникальным! SEO торжествует!
Самое время будет сказать, что при неправильном использовании тега the_excerpt(), все ссылки из той части статьи, что попала под действие тега, превращаются в простой текст. А вот если вставить ссылку в поле «Цитаты», в формате <a href=»URL страницы»>анкор</a>, то она благополучно пройдет фильтрацию и отобразиться в анонсе статьи. Вот такие дела товарищи!
Теперь вернемся к мифу №2. Я там описывал историю с добавлением ключевых слов в тег more.
Так вот, если в качестве главной на блоге использовать статическую страницу и в файле robots.txt разрешить индексацию категорий, то при использовании тега the_excerpt, в поле цитаты можно вставлять ссылки с уникальными анкорами-ключами, ведущими на саму запись.
Вот такой способ внутренней перелинковки вполне оправдан. Идем дальше.
Тег the_content() и его производная — тег more
Мы тут все говорили про тег more, а оказывается это просто производная от другого тега?
Давайте об всем по порядку. Тег the_content используется в файлах шаблона, аналогично тегу the_excerpt, но в отличии от последнего, имеет своего «агента» в редакторе WordPress — more. Попробую дать более развернутое определение.
Допустим, в моем шаблоне используется тег the_content, в файлах он прописывается следующим образом:
<?php the_content(); ?>
В скобках также могут указываться дополнительные параметры, в том числе анкор «Читать полностью», который будет выводить тег more. Например:
<?php the_content('Читать полностью »');?>
Об других параметрах the_content я расскажу в будущих статьях, посвященных непосредственно тегам шаблона.
Итак, я написал статью, поставил тег more в нужном мне месте и нажал кнопочку — «Опубликовать». Что происходит в этот момент в глубине «сознания» WordPress?
Если объяснять человеческим языком, то сей процесс со стороны будет выглядеть так:
Тег the_content, при виде нового текста, тут же отправляет срочную депешу своему начальнику, а именно функции the_content(), что находиться по знакомому нам адресу /wp-includes/post-template.php.
Функция the_content(), в свою очередь, делает контрольный звонок генеральному директору — функции get_the_content().
Генеральный быстренько проверяет данные по своим каналам и убедившись во второстепенном характере поступившей информации, оставляет принятие решения за нижестоящей инстанцией.
Функция the_content(), руководствуясь своими инструкциям, дает команду тегу the_content, вывести в качестве анонса тот участок текста, на который указал «агент» more. Просто шпионские страсти какие-то.
Внимание! Функция the_content() не видит цитаты и не выводит их в качестве анонсов!
Вроде бы все понятно, но любители политических детективов наверняка бы заметили, что в вышеприведенной цепочке движения информации, недостает одной маленькой детали.
По каким это это своим каналам, генеральная функция get_the_content() проверяла поступившие данные?
Как вывести уникальный анонс статьи с помощью тега more
Конечно основным информатором функции get_the_content() является файл functions.php, что расположен в корне шаблона и о возможностях которого, я расскажу в самом конце статьи.
Но допустим основной информатор не располагает какими-то нибыло важными сведениями. Где тогда «Маме» брать нужную информацию? Неужели детективная история на этом просто заканчивается?
В большинстве случаев так и происходит. Сигнал от тега the_content, пройдя по цепочке, возвращается к нему с указаниями вывести анонс по линии обрыва и все! Основная масса блогов работает именно по такой схеме.
Но развязка может быть совершенно иной, если в игру вступит еще один секретный агент, который подчиняется напрямую «Маме» и скрывается под псевдонимом — тег noteaser.
Уверен! Многие веб-мастера даже не слышали о существовании такого тега, но он есть и призван помогать тегу more в выполнении очень интересного задания, а именно — выводить уникальные анонсы записей.
Давайте я не буду тянуть и расскажу как это реализовать, тем более, что сложного в этом, ну вообще, ничего нет.
Возвращаемся к тому моменту, когда я написал статью и в нужном месте поставил тег more. Итак, для того чтобы анонс был уникальным, надо к тегу more добавить тег noteaser.
В HTML режиме редактора WordPress, сия конструкция должна выглядеть так:
<!--more--><!--noteaser-->
Что происходит в этом случаи? Как тег noteaser делает анонс уникальным?
Дело в том, что тег more выводит анонс по линии обрыва, а тег noteaser запрещает тексту анонса возвращаться обратно в статью. Т.е, участок текста, что попал в анонс становиться на 100% уникальным, так как он уже не будет повторятся на странице с записью. Вот такая история получается!
На заметку! В некоторых случаях, для вывода анонсов записей, используется еще один тег — the_content_rss.
В фалах шаблона он выглядит так:
<?php the_content_rss(); ?>
Который работает по схожему принципу с тегом the_content, но в отличии от последнего, в качестве обработчика сигнала использует фильтр apply_filters(), что находится по адресу /wp-includes/plugin.php.
Применяется тег the_content_rss в основном для вывода RSS ленты, но в некоторых шаблонах используется для вывода анонсов. Наглядный пример работы тега the_content_rss я приводил в статье, о способах вывода миниатюр на главной странице.
Наверное пришло время рассказать, какими возможностями обладает файл functions.php и как он может помочь нам с выводом анонсов статей.
Как настроить вывод анонсов в файле functions.php
Итак, если в Вашем шаблоне за вывод анонсов отвечает тег the_excerpt, то в файле functions.php для него можно прописать корректировочную функцию, в которой указать желаемое количество слов до обрыва записи.
Выглядеть функция будет следующим образом:
function mayak_segment_length($length) { return 20; } add_filter('excerpt_length', 'mayak_segment_length');
Где цифра 20 — количество слов до обрыва.
Также можно изменить пресловутую конструкцию […], которую тег the_excerpt создает в конце анонса и заменить ее на что-то более симпатичное, например на французскую кавычку,
Для этого в файл functions.php вставляем такую функцию:
function mayak_segment_more($more) { return ' »'; } add_filter('excerpt_more', 'mayak_segment_more');
Теперь вместо […] появится такой символ »
Можно использовать любые символы из таблицы Юникода на Ваше усмотрение.
Давайте пойдем еще дальше и заставим тег the_excerpt выводит в анонсе ссылку с анкором «Читать полностью »»:
function mayak_segment_more($more) { global $post; return '<a href="'. get_permalink($post->ID) . '">Читать полностью »</a>'; } add_filter('excerpt_more', 'mayak_segment_more');
Ну а теперь кульминация поста!
Как подружить тег the_excerpt и тег more
Для того, чтобы тег the_excerpt наконец признал существование тега more и учитывал его при обрыве контента, а тег море стал видеть цитаты, надо в файл functions.php надо вставить следующую функцию:
function mayak_segment_length ($length) { return 100; } function mayak_segment_more($more) { return '...'; } function mayak_announcement($length_callback='', $more_callback='') { global $post; add_filter('excerpt_length', $length_callback); add_filter('excerpt_more', $more_callback); $output = get_the_excerpt(); $output = apply_filters('wptexturize', $output); $output = apply_filters('convert_chars', $output); $output = ''.$output.''; echo $output; }
Затем, открываем файлы шаблона, где прописаны теги the_excerpt или the_content и в место них вставляем такой код:
<?php mayak_announcement(' mayak_segment_length', 'mayak_segment_more' ); ?> <a href="<?php the_permalink(); ?>"><span class="mayak-more">Читать полностью »</span></a>
Далее, открываем файл style.css и вписываем в него стили для класса mayak-more. Данный класс я специально задал для анкора «Читать полностью», чтобы управлять его внешним видом и позиционированием на странице:
.mayak-more { cursor: pointer; /* курсор в виде руки */ padding: 8px; /* внутренние отступы */ float: right; /* положение на странице справа*/ margin-right: 15px; /* внешний отступ справа */ color:#2D89A7; /* цвет */ font-size: 14px; /* размер шрифта */ font-weight: bold; /* жирность */ }
И все же, чего мы добьемся померив эти два тега?
1. Как я уже сказал, функция the_excerpt() будет учитывать тег more Т.е. при написании статьи мы можем по прежнему вставлять тег more в нужное место и обрыв статьи будет происходить ровно по этой строчке или абзацу.
2. Функция the_excerpt() включится в том случаи, если до тега more будет меньше слов, чем указанно в настройках функции:
function mayak_segment_length(($length) { return 100; }
Из этого следует, что в случаи, если мы забудем поставить тег more, то обрыв записи все равно произойдет, но уже по сигналу тега the_excerpt и при этом останется ссылка «Читать полностью». Вот видите, как два неприменимых тега могут работать вместе и при этом подстраховывая друг друга.
3. Для вывода анонсов мы можем использовать цитаты.
P.S. Анонсы статей являются важной составляющей продвижения любого проекта на WordPress и важно знать, как правильно использовать теги more и the_excerpt
Да встречи!
С уважением, Виталий Кириллов
seo-mayak.com
Я создаю Quiz для WordPress, в котором он заменил содержание сообщения WordPress на Quiz, если вы его включили. В каждой теме есть 5 вопросов, и для продолжения вам нужно отвечать на каждый вопрос один за другим.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я когда-либо отвечаю на вопросы, все работает отлично, за исключением того, что вопрос не появляется на одной странице загрузки. Мне всегда нужно обновляться, чтобы отобразить следующий вопрос. Например, если я отвечу на первый вопрос, он отправит форму и обновит страницу, но второй вопрос не появится. Когда я нажимаю обновление страницы, появляется второй вопрос. Я, вероятно, пропустил кое-что из WordPress, но не уверен, что это такое. Кто-то может помочь?
- как я могу разделить HTML в the_content (); вывод?
- Фильтр 'the_content', удаляющий html-теги из почтового содержимого
- Линейное редактирование в конце?
- Получать случайный пост-пост-пост для отображения в контенте
- Не удалось get_the_content (); сообщения в WordPress через AJAX
- Взорвать the_content () и сохранить постоянную ссылку и заголовки
КОД:
Функция, которая изменяет значение
/** * * @param [type] $content [description] * @return [type] [description] */ function wp_postquiz_content( $content ) { global $wp_postquiz_status, $questions;; $user_ID = get_current_user_id(); if ( $wp_postquiz_status == true && is_main_query() ) { $content = ""; // Get the previously answered questions for all posts. if ( get_user_meta($user_ID, 'wp_postquiz_user_has_answered', true) ) $answeredQuestions = get_user_meta($user_ID, 'wp_postquiz_user_has_answered', true); // Check how many questions are enabled and store // them in an array $q_switch = array(); for ($i=1; $i <= 5 ; $i++) { $q_switch[] = $questions['question-' . $i . '']['q_switch']; } // Always get the first question. $content .= wp_postquiz_display_question(1); // Get second question if first one is answered if ( $q_switch[1] == 1 && isset($answeredQuestions) && in_array("post-" . get_the_ID() . "-question-1", $answeredQuestions) ) $content .= wp_postquiz_display_question(2); // Get third question if second one is answered if ( $q_switch[2] == 1 && isset($answeredQuestions) && in_array("post-" . get_the_ID() . "-question-2", $answeredQuestions) ) $content .= wp_postquiz_display_question(3); // Get fourth questino if third one is answered if ( $q_switch[3] == 1 && isset($answeredQuestions) && in_array("post-" . get_the_ID() . "-question-3", $answeredQuestions) ) $content .= wp_postquiz_display_question(2); // Get fifth question if fourth one is answered if ( $q_switch[4] == 1 && isset($answeredQuestions) && in_array("post-" . get_the_ID() . "-question-4", $answeredQuestions) ) $content .= wp_postquiz_display_question(5); // Store the responses if answered correctly. if ( isset($_POST['question-no']) ) { for ($i=1; $i <=5 ; $i++) { if ( isset($_POST['answer-' . $i . '']) ) { // Get the correct Answer $q_correct_answer = $questions['question-' . $i . '']['correct-answer']; // If answered correctly store in user meta data. if ( $_POST['answer-' . $i . ''] == $q_correct_answer ) { wp_postquiz_update_user_metadata( $user_ID, 'wp_postquiz_user_has_answered', "post-" . get_the_ID() . "-question-" . $i . ""); } else { $content .= "Wrong Answer"; } } } } echo $content; } } add_filter( 'the_content', 'wp_postquiz_content', 10, 1 );
Функция для макета вопроса (wp_postquiz_display_question):
/** * Get Question from Database for the post * @param [int] $question_no * @return [string] */ function wp_postquiz_display_question($question_no) { // Check if Post Quiz is enabled or disabled. global $questions; // Get the post id in which quis is being used. $postid = get_the_ID(); // Question Details $q_post_content = $questions['question-' . $question_no . '']['content']; $q_question = $questions['question-' . $question_no . '']['question']; $q_option_1 = $questions['question-' . $question_no . '']['options']['option-1']; $q_option_2 = $questions['question-' . $question_no . '']['options']['option-2']; $q_option_3 = $questions['question-' . $question_no . '']['options']['option-3']; $q_option_4 = $questions['question-' . $question_no . '']['options']['option-4']; // HTML to return $question_html = '<div class="wp-postquiz-wrapper"> <div class="wp-postquiz content">' . $q_post_content . '</div> <div class="question-wrapper"> <form method="post"> <div class="wp-postquiz question">' . $q_question . '</div> <div class="wp-postquiz question-options"> <select name="answer-' . $question_no . '"> <option value="A">' . $q_option_1 . '</option> <option value="B">' . $q_option_2 . '</option> <option value="C">' . $q_option_3 . '</option> <option value="D">' . $q_option_4 . '</option> </select> </div> <input type="hidden" name="question-no" value="' . $question_no . '"> <input type="hidden" name="post-id" value="' . $postid . '"> <input type="hidden" name="action" value="answer-submitted"> <input type="submit" name="submit" class="button primary" value="Answer!"> </form> </div> </div>'; return $question_html; }
Solutions Collecting From Web of «Загрузка страницы WordPress the_content»
www.wordpressask.com
Просмотров: 11 274
Те, кто создает или правит шаблоны для WordPress знают, что функция the_content в WordPress выводит все содержимое записи или страницы.
Иногда, например, при выводе записей на главной странице, нужно вывести не всю запись целиком, а лишь какую-то ее часть. Нужно поставить ограничение для функции the_content.
Но, проблема в том, что по умолчанию в WordPress такой возможности нет.
Можно, конечно, воспользоваться функцией the_expert, но здесь другая проблема, она обрезает все изображения и теги, остается только текст.
Как быть?
Хочу поделиться решением, которое нашел на одном западном сайте.
В общем, вот, что нужно сделать.
Шаг 1. В файле functions.php нужно добавить следующую функцию:
function content($limit) { $content = explode(' ', get_the_content(), $limit); if (count($content)>=$limit) { array_pop($content); $content = implode(" ",$content).'...'; } else { $content = implode(" ",$content); } $content = preg_replace('/[.+]/','', $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); return $content; }
Шаг 2. В том месте шаблона, где нужно вывести обрезанный the_content, нужно добавить такую строку кода:
echo content(80);
здесь 80 – это количество символов, которые должны выводиться.
Это нужно написать вместо функции
the_content();
Давно мучился с этой проблемой, наконец, удалось решить. Спасибо сайту bavotasan.com.
Если вы хотите научиться легко и бытро вносить правки и изменять нужным образом шаблоны WordPress под себя, предлагаю вам курс, из которого вы узнаете, как они устроены и работают.
Подробнее здесь.
Научитесь делать это самостоятельно и НЕ платите сторонним разработчикам.
webgyry.info