Я создаю тему, которая будет показывать выдержки на главной странице для потенциально десятков постов. У меня нет отрывков из рук на всех моих постах, поэтому $post->post_excerpt
пуст для многих постов. В случае отсутствия отрывка вручную, я хотел бы использовать встроенную функцию get_the_excerpt (), но она недоступна вне цикла.
Отслеживая функцию, похоже, она использует wp_trim_excerpt из wp-includes / formatting.php для создания отрывков на лету. Я называю это в моем коде как wp_trim_excerpt( $item->post_content )
, но это просто возвращает полный контент. Я делаю что-то неправильно?
Я знаю, что могу создать свою собственную функцию для создания выдержки, но мне нравится использовать встроенные функции, где это возможно, чтобы мой код был совместим с другими потенциальными плагинами / фильтрами.
http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php
$myvar = apply_filters( 'the_excerpt', $myvar );
Ответы:
Начиная с WP 3.3.0,
wp_trim_words()
полезно, если вы можете получить контент, для которого вы хотите сгенерировать отрывок. Надеюсь, что это будет полезно для кого-то и сэкономит создание собственной функции подсчета слов.http://codex.wordpress.org/Function_Reference/wp_trim_words
источник
wp_trim_excerpt()
имеет немного любопытную механику - если что-то передается ему, то это ничего не делает.Вот основная логика:
get_the_excerpt()
проверяет выписку вручную;wp_trim_excerpt()
включается, если нет отрывка вручную и делает его из контента или тизера.Оба тесно связаны с глобальными переменными и поэтому Loop.
Вне цикла вам лучше вынуть код
wp_trim_excerpt()
и написать собственную функцию усечения.источник
Обновить:
Вот производная от wp_trim_excerpt (), которую я использовал. Работает отлично. Получено из Wordpress версии 3.0.4
источник
Вот мой взгляд на «trim_excerpt», который принимает объект сообщения или идентификатор сообщения в качестве параметра.
Очевидно, основано на том, что в ядре. Не знаю, почему у этого (и get_the_author ()) нет нецикличных эквивалентов.
источник
+1 к раст. Очень странно, что нет такой вещи как get_the_excerpt ($ post-> ID), когда должно быть совершенно очевидно, что так и должно быть. Во всяком случае, вот в wp_trim_excerpt () в WordPress версии 3.0.4:
http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/formatting.php
Вы можете увидеть в строке 1826, что она связана с глобальной переменной $ post через get_the_contents. И да, я понятия не имею, о чем они думали. Но отсюда замените get_the_content на $ text в вашем собственном my_excerpt, и он должен вести себя аналогичным образом.
источник
Функция get_the_content () вернула бы полный контент, если $ more! = 0. Вы должны установить глобальную переменную $ more в 0, чтобы функция get_the_content () возвращала отрывок.
Модифицированная функция wp_trim_excerpt ():
источник
Используя ответы других выше, вот простой ответ, который, кажется, работает хорошо:
Я использую его в
<meta>
тегах функции для определения описаний OpenGraph. Итак, я просто добавляю:источник