The content wordpress


Функция возвращает содержимое текущего поста. Работает только в цикле.

$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 и т.д.


vyvod anonsov statei

Вот я и решил написать этот пост, в помощь моим читателям и всем начинающим веб-мастерам.

А если Вы дочитаете статью до конца, то узнаете как подружит теги 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 действительно способен выводить уникальные анонсы статей. Давайте разберемся как это дело реализовать.

Открываем любую запись, в самом верху страницы жмем на вкладку «Настройки экрана» и ставим галочку возле пункта «Цитата»:

anonsy statei1

После проведенных манипуляций, ниже редактора должен появится новый раздел:


anonsy statei2

В появившиеся поле вписываем краткое описание статьи или любой другой уникальный текст.

И вот оно счастье! Анонс стал полностью уникальным! 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('Читать полностью &raquo;');?>

Об других параметрах 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 ' &raquo;';  }  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, но здесь другая проблема, она обрезает все изображения и теги, остается только текст.

Как быть?

Хочу поделиться решением, которое нашел на одном западном сайте.

Excerpt or Content Word Limit in WordPress: Redux

В общем, вот, что нужно сделать.

Шаг 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(']]>', ']]&gt;', $content);    return $content;  }

Шаг 2. В том месте шаблона, где нужно вывести обрезанный the_content, нужно добавить такую строку кода:

echo content(80);

здесь 80 – это количество символов, которые должны выводиться.

Это нужно написать вместо функции

the_content();

Давно мучился с этой проблемой, наконец, удалось решить. Спасибо  сайту bavotasan.com.

Если вы хотите научиться легко и бытро вносить правки и изменять нужным образом шаблоны WordPress под себя, предлагаю вам курс, из которого вы узнаете, как они устроены и работают.

Подробнее здесь.

Научитесь делать это самостоятельно и НЕ платите сторонним разработчикам.

webgyry.info


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.