Несколько отрывков в wordpress

Как говорится в названии, я ищу несколько отрывков в WordPress.

Я понимаю, что вы можете сделать это в functions.php:

function twentyten_excerpt_length( $length ) { return 15; } add_filter( 'excerpt_length', 'twentyten_excerpt_length' ); 

Я хочу знать, как вы можете иметь несколько из них, каждый из которых возвращает разные числовые значения, поэтому я могу получить короткие отрывки для петель боковой панели, более длинные выдержки для выделенных циклов и самую длинную выдержку для основной статьи.

Что-то вроде использования этих шаблонов:

 <?php the_excerpt('length-short') ?> <?php the_excerpt('length-medium') ?> <?php the_excerpt('length-long') ?> 

Привет, Дэйв

Как насчет…

 function excerpt($limit) { $excerpt = explode(' ', get_the_excerpt(), $limit); if (count($excerpt) >= $limit) { array_pop($excerpt); $excerpt = implode(" ", $excerpt) . '...'; } else { $excerpt = implode(" ", $excerpt); } $excerpt = preg_replace('`\[[^\]]*\]`', '', $excerpt); return $excerpt; } 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; } 

то в свой код шаблона вы просто используете ..

 <?php echo excerpt(25); ?> 

от: http://bavotasan.com/tutorials/limiting-the-number-of-words-in-your-excerpt-or-content-in-wordpress/

На данный момент вы можете обновить ответ Марти:

 function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit); } 

Вы также можете определить пользовательскую ссылку «читать больше» следующим образом:

 function custom_read_more() { return '... <a class="read-more" href="'.get_permalink(get_the_ID()).'">more&nbsp;&raquo;</a>'; } function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit, custom_read_more()); } 

Это то, что я придумал.

Добавьте это в свои functions.php

 class Excerpt { // Default length (by WordPress) public static $length = 55; // So you can call: my_excerpt('short'); public static $types = array( 'short' => 25, 'regular' => 55, 'long' => 100 ); /** * Sets the length for the excerpt, * then it adds the WP filter * And automatically calls the_excerpt(); * * @param string $new_length * @return void * @author Baylor Rae' */ public static function length($new_length = 55) { Excerpt::$length = $new_length; add_filter('excerpt_length', 'Excerpt::new_length'); Excerpt::output(); } // Tells WP the new length public static function new_length() { if( isset(Excerpt::$types[Excerpt::$length]) ) return Excerpt::$types[Excerpt::$length]; else return Excerpt::$length; } // Echoes out the excerpt public static function output() { the_excerpt(); } } // An alias to the class function my_excerpt($length = 55) { Excerpt::length($length); } 

Его можно использовать так.

 my_excerpt('short'); // calls the defined short excerpt length my_excerpt(40); // 40 chars 

Это самый простой способ добавления фильтров, которые могут быть вызваны из одной функции.

Я тоже искал эту функцию, и большинство функций здесь хорошие и гибкие. Для моего случая я искал решение, которое показывает другую длину фрагмента только на определенных страницах. Я использую это:

 function custom_excerpt_length( $length ) { return (is_front_page()) ? 15 : 25; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 ); 

Вставьте этот код в файл functions.php тем.

Возвращаясь к ответу Марти:

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

  $excerpt = explode(' ', get_the_excerpt(), $limit); 

с этой строкой:

  $excerpt = explode(' ', get_the_content(), $limit); 

В противном случае функция работает только с уже обрезанным фрагментом текста.

Я думаю, что теперь мы можем использовать wp_trim_words здесь . Не уверен, какие дополнительные возможности для экранирования и дезинфекции необходимы для использования этой функции, но это выглядит интересно.

Вы можете добавить в свой файл functions.php эту функцию

 function custom_length_excerpt($word_count_limit) { $content = wp_strip_all_tags(get_the_content() , true ); echo wp_trim_words($content, $word_count_limit); } 

Затем назовите его в своем шаблоне следующим образом:

 <p><?php custom_length_excerpt(50); ?> 

wp_strip_all_tags должен препятствовать wp_strip_all_tags тегов html.


Документация по функциям

  • get_the_content
  • wp_trim_words
  • wp_strip_all_tags

Здесь простой способ ограничить содержание или выдержку

 $content = get_the_excerpt(); $content = strip_tags($content); echo substr($content, 0, 255); 

измените get_the_excerpt () на get_the_content (), если хотите содержимое.

С уважением

Я нашел отличный плагин, который может это сделать – Content и Excerpt Word Limit

Использовать расширенную выдержку
http://wordpress.org/extend/plugins/advanced-excerpt/ плагин. Я тоже нашел ответ с этой страницы.

Я могу создать короткий код, я не пробовал, но написал для вас основную идею о его структуре

 function twentyten_excerpt_length($atts,$length=null){ shortcode_atts(array('exlength'=>'short'),$atts); if(!isset($atts['exlength']) || $atts['exlength'] == 'short') { return 15; }elseif( $atts['exlength'] == 'medium' ){ return 30; // or any value you like }elseif( $atts['exlength'] == 'long' ){ return 45; // or any value you like }else{ // return nothing } } add_shortcode('the_excerpt_sc','twentyten_excerpt_length'); 

так что вы можете использовать его так

 [the_excerpt_sc exlength="medium"] 

Я знаю, что это действительно старая нить, но я просто боролся с этой проблемой, и ни одно из решений, которые я нашел в Интернете, не работало правильно для меня. С одной стороны, мой собственный «отрывок» больше всего был отсечен.

То, как я это решал, уродливо, но это единственное рабочее решение, которое я мог найти. Уродство включает в себя модификацию 4 строк ядра WP (!!) + использование еще одной глобальной переменной (хотя WP уже делает это так, что я не чувствую себя слишком плохо).

Я изменил wp_trim_excerpt в wp-includes / formatting.php на следующее:

 <?php function wp_trim_excerpt($text = '') { global $excerpt_length; $len = $excerpt_length > 0 ? $excerpt_length : 55; $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $text); $excerpt_length = apply_filters('excerpt_length', $len); $excerpt_more = apply_filters('excerpt_more', ' ' . '[&hellip;]'); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } $excerpt_length = null; return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); } 

Единственный новый материал – $excerpt_length и $len bits.

Теперь, если я хочу изменить длину по умолчанию, я делаю это в своем шаблоне:

 <?php $excerpt_length = 10; the_excerpt() ?> 

Изменение ядра – это ужасное решение, поэтому я хотел бы знать, если кто-то придумает что-то лучшее.

Будьте осторожны, используя некоторые из этих методов. Не все из них вытесняют html-теги, то есть, если кто-то вставляет ссылку на видео (или url) в первое предложение своего сообщения, видео (или ссылка) будет отображаться в выдержке, возможно, раздувая вашу страницу.

Я бы сделал так:

 function _get_excerpt($limit = 100) { return has_excerpt() ? get_the_excerpt() : wp_trim_words(strip_shortcodes(get_the_content()),$limit); } 

Применение :

 echo _get_excerpt(30); // Inside the loop / query 

Зачем ?

  • Если has_excerpt должен вернуть данный выдержку
  • Это не так, так что аккуратные слова / полосы коротких кодов от the_content

Вот статья об использовании пользовательской длины выдержки в WordPres. Существует ряд способов ограничения и контроля длины выписки.

  1. Ограничить длину выдержки из выдержек или длину сообщения, используя количество слов.
  2. Ограничение длины выдержки до нескольких символов.
  3. Ограничьте резюме, добавив тег 'read more'.
  4. Включение пользовательской отрывки для написания собственного резюме для каждого сообщения.
  5. Длина контрольной выдержки с использованием фильтров

http://smallenvelop.com/limit-post-excerpt-length-in-wordpress/ Надеюсь, это поможет вам.