Получить отрывок с помощью get_the_excerpt вне цикла
-
-
хорошо,получил это с помощьюmy_excerpt ($post->post_content,get_the_excerpt ()) и функцииmy_excerpt () из http://wordpress.stackexchange.com/questions/6961/using-wp-trim-excerpt-to-получить-выдержку-вне-циклаok, got it using `my_excerpt($post->post_content, get_the_excerpt())` and using the `my_excerpt()` function from http://wordpress.stackexchange.com/questions/6961/using-wp-trim-excerpt-to-get-the-excerpt-outside-the-loop
- 0
- 2011-08-24
- ariel
-
Пожалуйста,добавьте решение,которое вы придумали в качестве ответа,чтобы это не мешало сайту оставаться без ответа.:)Please add solution you came up with as an answer, so this doesn't haunt site as unanswered question. :)
- 3
- 2011-09-11
- Rarst
-
Просто используйте функциюthe_post () (она работает и с шаблоном отдельного сообщения) перед тем,как вызватьget_the_excerpt (),она установит для вас необходимые данные.Just use `the_post()` (it works on single post template too) function before you call `get_the_excerpt()` it will setup necessary data for you.
- 0
- 2014-09-18
- Sisir
-
9 ответ
- голосов
-
- 2011-09-13
получил его с помощью
my_excerpt($post->post_content, get_the_excerpt())
и с помощью функцииmy_excerpt()
из Использование wp_trim_excerpt для выводаthe_excerpt () вне циклаgot it using
my_excerpt($post->post_content, get_the_excerpt())
and using themy_excerpt()
function from Using wp_trim_excerpt to get the_excerpt() outside the loop-
Ответы только по ссылкам не годятся.Скопируйте сюда соответствующий код.Когда эта ссылка не работает,этот сайт не работает/исчезает,тогда этот ответ не имеет значения.Link-only answers are no good. Copy the relevant code here. When that link is broken, that site is down / gone, then this answer has no value.
- 2
- 2014-06-18
- random_user_name
-
У меня это сработало отлично!It worked perfectly for me!
- 0
- 2017-07-24
- Saikat
-
- 2014-06-18
Я нашел этот вопрос,когда искал,как это сделать без объекта сообщения.
Мое дополнительное исследование показало эту хитрую технику:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
I found this question when looking how to do this without the post object.
My additional research turned up this slick technique:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
-
Это следует принять как ответ,так как это рекомендуемый способ извлечения данных за пределы цикла.Также не требуется никаких пользовательских функций или переопределения глобальной переменной $post.This should be accepted as answer as it's the recommended way to pull data outside the loop. Also doesn't require any custom function or overriding of the `$post` global variable.
- 1
- 2015-06-16
- MacK
-
он возвращает пустую строку.it return empty string.
- 4
- 2016-01-20
- Kyaw Tun
-
@KyawTun - он работает,пока установлен `$post_id` (каково значение` $post_id`? И `$post_id` является допустимым,допустимым идентификатором сообщения.@KyawTun - it works, so long as `$post_id` is set (what is the value of `$post_id`? AND `$post_id` is a valid, legitimate post ID.
- 1
- 2016-01-20
- random_user_name
-
@cale_b Спасибо.Я использую запросget_posts и получаю ID из результирующего массива.У объектаpost естьpost_title,post_content,ID и т.д. Но он не работает.@cale_b Thanks. I use get_posts query and get ID from the resulting array. The post object does have post_title, post_content, ID, etc. But not working.
- 2
- 2016-01-21
- Kyaw Tun
-
Если вам нужен ТОЛЬКО ТЕКСТ,а не тег
,который включен в фильтрthe_excerpt,используйте фильтр "get_the_excerpt",чтобы фильтр стал таким: $text=apply_filters ('get_the_excerpt',get_post_field ('post_excerpt',$post_id));это даст вам только текст в формате RAW,который вы можете вставить где угодно в вашей собственной разметке.
If you need JUST the TEXT and nottag which is included with the_excerpt filter, then use "get_the_excerpt" filter, so that above filter becomes: $text = apply_filters('get_the_excerpt', get_post_field('post_excerpt', $post_id)); this will give you just the RAW text you can insert anywhere in your own markup.
- 0
- 2016-05-20
- Mohsin
-
У меня тоже не работает.Помните: «отрывок из сообщения. Это либо предоставленный пользователем отрывок,который возвращается без изменений,либо автоматически сгенерированная сокращенная версия полного содержания сообщения с подсчетом слов».Может сработать для предоставленного пользователем?Я искал автоматически сгенерированный отрывок.Doesn't work for me either. Remember: "the excerpt of the post. This is either a user-supplied excerpt, that is returned unchanged, or an automatically generated word-counted trimmed-down version of the full post content." Might work for the user-supplied one? I was looking for the automatically-generated excerpt.
- 0
- 2019-03-20
- Fabien Snauwaert
-
- 2012-06-08
Поскольку кажется,что у вас уже есть объект сообщения,для которого вам нужен отрывок,вы можете просто заставить все работать:
setup_postdata( $post ); $excerpt = get_the_excerpt();
Функция
setup_postdata()
глобализирует объект$post
и сделает его доступным для обычной старой функции цикла.Когда вы находитесь внутри цикла,вы вызываетеthe_post()
,и он настраивает все для вас ... вне цикла вам нужно принудительно запустить его вручную.Since it seems you already have the post object you need the excerpt for, you can just force things to work:
setup_postdata( $post ); $excerpt = get_the_excerpt();
The
setup_postdata()
function will globalize the$post
object and make it available for regular old loop function. When you're inside the loop, you callthe_post()
and it sets things up for you ... outside of the loop you need to force it manually.-
Это работает,но: «Вы должны передать ссылку на глобальную переменную` $post`,иначе функции,подобные `the_title ()`,не будут работать должным образом. " `global $post; $post=$post_object; setup_postdata ($post); $excerpt=get_the_excerpt ();`This works but: "You must pass a reference to the global `$post` variable, otherwise functions like `the_title()` don't work properly." `global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();`
- 1
- 2017-01-19
- deach
-
`setup_postdata ($post);` FTW !!!!`setup_postdata($post);` FTW!!!!
- 0
- 2017-04-30
- squarecandy
-
- 2012-06-08
Попробуйте это:
Создайте новую функцию вfunctions.php и затем вызывайте ее откуда угодно.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); //Gets post ID $the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt $excerpt_length = 35; //Sets excerpt length by word count $the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images $words = explode(' ', $the_excerpt, $excerpt_length + 1); if(count($words) > $excerpt_length) : array_pop($words); array_push($words, '…'); $the_excerpt = implode(' ', $words); endif; $the_excerpt = '<p>' . $the_excerpt . '</p>'; return $the_excerpt; }
Try this:
Create a new function in functions.php and then call it from wherever.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); //Gets post ID $the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt $excerpt_length = 35; //Sets excerpt length by word count $the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images $words = explode(' ', $the_excerpt, $excerpt_length + 1); if(count($words) > $excerpt_length) : array_pop($words); array_push($words, '…'); $the_excerpt = implode(' ', $words); endif; $the_excerpt = '<p>' . $the_excerpt . '</p>'; return $the_excerpt; }
-
Отличная находка,мой друг.Я никогда не понимал,почему WordPress отказался от такой важной функции.Это эффективно восстанавливает его с нуля,но это работает.Учитывая,как часто мы используем отрывок за пределами цикла с такими функциями,как плагины для обмена в социальных сетях,вероятно,он должен был остаться частью ядра.Excellent find my friend. I've never understood why WordPress would have deprecated such a critical function. This is effectively rebuilding it from scratch, but it works. Given how often we use the excerpt outside the loop with features like social sharing plugins, it probably should have remained a part of the core.
- 1
- 2014-05-15
- Imperative Ideas
-
Ответ EAMann - гораздо лучший подход к этой проблеме,и его следует рассматривать как лучшую практику.Этот подход в основном дублирует внутреннее устройство Core вместо использования API.EAMann's answer is a much better approach to this problem, and the should be considered the best practice. This approach is basically duplicating Core's internals instead of using the API.
- 1
- 2015-03-24
- Ian Dunn
-
- 2016-05-20
Теперь вы можете просто использовать
get_the_excerpt( $postID )
функция. Начиная с: WordPress 4.5.0 представил параметр$post
.Now you can simply use the
get_the_excerpt( $postID )
function. Since: WordPress 4.5.0 introduced the$post
parameter.-
Это должен быть новый принятый ответ,поскольку мы живем в эпоху WP 4.5+.This should be new accepted answer since we are in WP 4.5 + era.
- 1
- 2016-06-13
- Matija Mrkaic
-
Это не сработает,если отрывок пуст,поскольку фильтр `wp_trim_excerpt` вернет отрывок для текущего сообщения.This won't work if the excerpt is empty as the `wp_trim_excerpt` filter will return the excerpt for the current post.
- 18
- 2016-08-16
- Dylan
-
См. Https://core.trac.wordpress.org/ticket/36934 для получения подробной информации о том,что сказал @Dylan.See https://core.trac.wordpress.org/ticket/36934 for details on what @Dylan said
- 9
- 2016-09-14
- kraftner
-
- 2012-11-25
Если у вас нет объектаpost,вот небольшая функция,подобная той из Withers.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); $the_excerpt = $the_post->post_excerpt; return $the_excerpt; }
In case you don't have the post object, here's a short function like the one from Withers.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); $the_excerpt = $the_post->post_excerpt; return $the_excerpt; }
-
Но у спрашивающего есть объект сообщения,как указано в вопросе.But the asker has a post object as stated in the question.
- 0
- 2012-11-25
- fuxia
-
Поправьте меня,если я ошибаюсь,этот метод вернет выдержку из руководства,но ** не ** сгенерирует ее при необходимостиCorrect me if I'm wrong, this method will return the manual excerpt but **won't** generate one if needed
- 3
- 2014-11-07
- Bill
-
- 2014-09-30
Это когда вы хотите использовать
get_the_excerpt()
вне цикла:function custom_get_excerpt($post_id) { $temp = $post; $post = get_post($post_id); setup_postdata($post); $excerpt = get_the_excerpt(); wp_reset_postdata(); $post = $temp; return $excerpt; }
This is for when you want to use
get_the_excerpt()
outside the loop:function custom_get_excerpt($post_id) { $temp = $post; $post = get_post($post_id); setup_postdata($post); $excerpt = get_the_excerpt(); wp_reset_postdata(); $post = $temp; return $excerpt; }
-
Это самый простой способ сделать это ... Хотя не уверен,что он хорош с точки зрения производительности.Ты все еще получаешь мой +1This is the most direct way to do it.. Not sure it's great performance-wise though. You still get my +1
- 0
- 2014-11-07
- Bill
-
- 2017-05-15
Если вы хотите автоматически сгенерировать отрывок из содержания в одной строке,вы можете использовать
wp_trim_words
работают следующим образом:// 30 is the number of words ehere $excerpt = wp_trim_words(get_post_field('post_content', $post_id), 30);
If you'd like to generate the excerpt automatically from the content in one line - you can use
wp_trim_words
function like this:// 30 is the number of words ehere $excerpt = wp_trim_words(get_post_field('post_content', $post_id), 30);
-
-
Пожалуйста,** [отредактируйте] свой ответ ** и добавьте пояснение: ** почему ** это может решить проблему?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2018-03-14
- fuxia
-
У меня есть код,который вызывает
get_the_title()
,и он работает,ноget_the_excerpt()
возвращает пустой.Как заставить его работать?Этот код находится внутри плагина под названием «Протокол WP Facebook Open Graph».Вот что я хочу изменить:
Здесь
has_excerpt
всегда терпит неудачу,аget_the_excerpt($post->ID)
больше не работает (устарело).Итак,как мне отобразить здесь отрывок?
ps: я тоже использую плагин Advanced Excerpt