Настройка get_the_excerpt () для определенной длины и вывода «Read More».

Я обдумываю шаблон. Существует список, в который вписывается введение из первых 1-2 абзацев (все статьи из категории). Если я установил выдержку в 295 слов, иногда список захватывает дополнительные слова из следующего абзаца. Я хотел бы добавить тег Read More, чтобы остановить его. Может ли кто-нибудь помочь мне с этой частью?

<div id="all-div-cabrand-content-stories"> <div class="kids-families-con-cabrand-stories"> <?php echo get_the_post_thumbnail($page->ID, 'thubmnailstorysmall'); ?> </div> <div class="kids-con-cabrand-new-stories"> <span> <?php print substr(get_the_excerpt(),wp_trim_excerpt(),295); ?> <i><a style="color:#1975D1;float:Right;" class="title" href="<?php the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i> <br/> </span> </div> </div> 

Вы можете получить первый или два абзаца с регулярным выражением (regexp)

 function custom_excerpt( $content = '' ){ if( empty( $content ) ) return $content; $result = ''; $matches = array(); // grab all paragraphs from $content preg_match_all( '#<\s*p[^>]*>(.*?)<\s*/\s*p>#ui', $content, $matches ); if( ! empty( $matches ) ){ // add the first paragraph $result = $matches[0][0]; // add the swecond paragraph if available if( isset( $matches[0][1] ) ) $result .= $matches[0][1]; // set the excerpt length add_filter( 'excerpt_length', 'custom_excerpt_length' ); // create the custom excerpt $result = custom_trim_excerpt( $result ); } return $result; } function custom_excerpt_length(){ return 295; } function custom_trim_excerpt( $text = '' ){ $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $text); $excerpt_length = apply_filters('excerpt_length', 55); $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]'); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); return $text; } 

Вызовите функцию с помощью

 <?php print custom_excerpt( get_the_content( 'Read More' ) ); ?> 

Это немного сложно, потому что вы не можете передать wp_trim_excerpt() . wp_trim_excerpt() будет просто возвращать текст, если он указан. Вы должны скопировать и настроить функцию немного.

Чтобы получить то, что вам нужно, вам нужно сделать две вещи.

1) Установите пользовательскую длину выдержек (словами, а не символами), что наилучшим образом достигается, следуя этому ответу .

2) Просто вызовите wp_trim_excerpt (), не заворачивайте его внутри substr

Ваша строка кода выше не делает то, что вы ожидаете от нее. Я верю, что он возвращает первые 295 символов выдержки, но я не совсем уверен в том, что будет делать функция php subtr () , когда вы передадите ей строку в качестве второго аргумента, когда она ожидает целое число.

Чтобы получить определенную длину, вы можете использовать функцию wp_trim_words . Он имеет 3 параметра.

  1. Текст для обрезки. Пример: get_the_content()
  2. Число слов. Пример: 295
  3. Что добавить после окончания текста. Ex: '' Это означает, что null.

Использовать это:

 <span> <?php echo wp_trim_words( get_the_content(), 295, '' ); ?> <i><a style="color:#1975D1;float:Right;" class="title" href="<?php the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i> <br/> </span> 

Вы можете использовать встроенную функцию

 function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 ); 

http://codex.wordpress.org/Function_Reference/the_excerpt