Как я могу ограничить длину символа в отрывке?
2 ответ
- голосов
-
- 2012-10-30
добавьте эти строки в файлfunction.php
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
add these lines in function.php file
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
-
Это ограничивает количество слов до 20,а не символов.This limits the number of words to 20, not the characters.
- 9
- 2016-12-07
- Ionut
-
Почему мы добавили сюда число 999?Why we have added number 999 here?
- 0
- 2018-04-11
- Navnish Bhardwaj
-
@NavnishBhardwaj 999 - это приоритет для загружаемого фильтра.обратитесь сюда для получения более подробной информации. https://developer.wordpress.org/reference/functions/add_filter/@NavnishBhardwaj 999 is the priority for the filter to be loaded. refer here for more details. https://developer.wordpress.org/reference/functions/add_filter/
- 1
- 2018-04-18
- Annapurna
-
- 2012-10-30
В дополнение к вышеуказанному хуку фильтра,предоставленному ответом Дипы,здесь есть еще одна дополнительная функция,которая может помочь вам расширить использование
the_excerpt
двумя способами,Позволяет ...
Ограничьте отрывок количеством символов,но НЕ обрезайте последнее слово. Это позволит вам вернуть максимальное количество символов,но сохранить полные слова,поэтому будут возвращены только слова,которые могут соответствовать указанному количеству,и вы сможете указать источник,из которого будет взят отрывок.
function get_excerpt($limit, $source = null){ $excerpt = $source == "content" ? get_the_content() : get_the_excerpt(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $limit); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; return $excerpt; } /* Sample... Lorem ipsum habitant morbi (26 characters total) Returns first three words which is exactly 21 characters including spaces Example.. echo get_excerpt(21); Result... Lorem ipsum habitant Returns same as above, not enough characters in limit to return last word Example.. echo get_excerpt(24); Result... Lorem ipsum habitant Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. Example.. echo get_excerpt(30); Result... Lorem ipsum habitant morbi */
Эту функцию можно использовать несколько раз в файлах темы,в каждом из которых указаны ограничения на количество символов.
Эта функция может извлекать отрывок из любого,
the_content
the_excerpt
Например,если у вас есть сообщения,содержащие текст в полеthe_excerpt на экране редактора сообщений,но вы хотите вместо этого вытащить отрывок из телаthe_content для особого случая использования;
get_excerpt(140, 'the_content'); //excerpt is grabbed from get_the_content
Это сообщает функции,что вам нужны первые 140 символов из
the_content
,независимо от того,установлен ли отрывок в полеthe_excerpt
.get_excerpt(140); //excerpt is grabbed from get_the_excerpt
Это указывает функции,что вы хотите сначала получить первые 140 символов из
the_excerpt
,и если выдержки не существует,the_content
будет использоваться в качестве запасного варианта.Функцию можно улучшить,чтобы сделать ее более эффективной и/или включить с помощью фильтров WordPress как для
the_content
,так и дляthe_excerpt
,или просто использовать как есть в ситуациях,когда не подходит ,встроенная альтернатива WordPress API.In addition to the above filter hook supplied by Deepa's answer here is one additional function that can help you extend the use of
the_excerpt
in two ways,Allows you to...
Limit the excerpt by number of characters but do NOT truncate the last word. This will allow you to return a maximum number of characters but preserve full words, so only the words that can fit within the specified number limit are returned and allow you to specify the source of where the excerpt will come from.
function get_excerpt($limit, $source = null){ $excerpt = $source == "content" ? get_the_content() : get_the_excerpt(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $limit); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; return $excerpt; } /* Sample... Lorem ipsum habitant morbi (26 characters total) Returns first three words which is exactly 21 characters including spaces Example.. echo get_excerpt(21); Result... Lorem ipsum habitant Returns same as above, not enough characters in limit to return last word Example.. echo get_excerpt(24); Result... Lorem ipsum habitant Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. Example.. echo get_excerpt(30); Result... Lorem ipsum habitant morbi */
This function can be used multiple times through out theme files, each with different character limits specified.
This function has the ability to retrieve an excerpt from either,
the_content
the_excerpt
For example, if you have posts that contain text in the_excerpt box on the post editor screen, but want to pull an excerpt from the_content body instead for a special use case you would instead do;
get_excerpt(140, 'the_content'); //excerpt is grabbed from get_the_content
This tells the function that you want the first 140 characters from
the_content
, regardless of whether an excerpt is set inthe_excerpt
box.get_excerpt(140); //excerpt is grabbed from get_the_excerpt
This tells the function that you want the first 140 characters from
the_excerpt
first and if no excerpt exists,the_content
will be used as a fallback.The function can be improved to be made more efficient and or incorporated with the use of WordPress filters for both
the_content
orthe_excerpt
or simply used as is in situations where there is no suitable, in-built WordPress API alternative.-
Привет!Спасибо всем за предоставленный ответ!Я хотел бы спросить,как заставить работать ... вместо [...] в конце отрывка?Hi! Thanks for all for the answer provided! I would like to ask, how to make it work with ... instead of [...] at the end of excerpt?
- 0
- 2012-11-02
- Jornes
-
Последняя строка,`$excerpt=$excerpt .'... More '; `- это то,что вы можете использовать для определения вашегоссылка "читать дальше" так сказать.Вы можете видеть,что там добавлено многоточие,но вы можете добавить все,что захотите.The last line, `$excerpt = $excerpt.'... more';` is what you can use to define your "read more" link so to speak. You can see there it adds an ellipsis but you can add whatever you like.
- 0
- 2012-11-02
- Adam
-
@Jornes,может быть,на 6 лет позже,но вот HTML-код для многоточия `& hellip;`@Jornes it maybe 6 years late, but here is the HTML code for the ellipsis `…`
- 1
- 2018-07-20
- AlbertSamuel
-
@AlbertSamuel Спасибо за ответ.:)@AlbertSamuel Thank you for the answer. :)
- 1
- 2019-05-10
- Jornes
Возможный дубликат:
отрывок в символах
У меня возник вопрос после прочтения этого сообщения ( Как выделить поискусловия без плагина ).Мне очень нравится эта функция (поисковый запрос без плагина),но длина символа слишком велика.Какойphp-код нужно добавить,чтобы отрывок был короче?Был бы признателен,если бы кто-нибудь мог это предложить.Спасибо!