Несколько длин выдержки в wordpress
Как говорится в названии, я ищу несколько длин отрывков в WordPress.
Я понимаю, что вы можете сделать это в функции.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') ?>
Ура,
Дэйв
15 ответов:
Как насчет...
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(']]>', ']]>', $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 »</a>'; } function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit, custom_read_more()); }
вот что я придумал.
добавьте это в ваш
functions.phpclass 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 );вставить этот код в функции темы.PHP-файл.
возвращаясь к ответу Марти:
Я знаю, что прошло уже больше года с тех пор, как этот ответ был опубликован, но лучше поздно, чем никогда. Для этого, чтобы работать с ограничениями по умолчанию WordPress 55, вам нужно заменить эту строку:
$excerpt = explode(' ', get_the_excerpt(), $limit);С этой строки:
$excerpt = explode(' ', get_the_content(), $limit);в противном случае функция работает только с уже сокращенными фрагмент текста.
вы можете добавить к вашим функциям.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); ?>The
wp_strip_all_tagsдолжен предотвратить случайные HTML-теги от взлома страницы.
документация по функции
Я думаю, что теперь мы можем использовать
wp_trim_wordsпосмотреть здесь. Не уверен, что дополнительные данные экранирования и дезинфекции необходимо использовать эту функцию, но это выглядит интересно.
вот простой способ ограничить содержание или отрывок
$content = get_the_excerpt(); $content = strip_tags($content); echo substr($content, 0, 255);измените get_the_excerpt () на get_the_content (), если вы хотите содержимое.
в отношении
будьте осторожны, используя некоторые из этих методов. Не все из них удаляют HTML-теги, то есть если кто-то вставляет ссылку на видео (или url) в первом предложении своего сообщения, видео (или ссылка) будет отображаться в отрывке, возможно, взорвав вашу страницу.
Я нашел отличный плагин, который может сделать это... содержание и выдержка слово предел
используйте расширенный отрывок
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"]
Я знаю, что это действительно старая тема, но я просто боролся с этой проблемой, и ни одно из решений, которые я нашел в Интернете, не работало должным образом для меня. Во-первых, мой собственный "excerpt_more" - фильтр всегда был отключен.
то, как я решил это уродливо, как ад, но это единственное рабочее решение, которое я мог найти. Уродство включает в себя изменение 4 линий WP core(!!) + использование еще одной глобальной переменной (хотя WP уже делает это так много, что я не чувствую себя слишком плохо).
I изменилось
wp_trim_excerptв wp-включает / форматирование.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(']]>', ']]>', $text); $excerpt_length = apply_filters('excerpt_length', $len); $excerpt_more = apply_filters('excerpt_more', ' ' . '[…]'); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } $excerpt_length = null; return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); }единственный новый материал-это
$excerpt_lengthи$lenбит.теперь, если я хочу изменить длину по умолчанию, я делаю это в мой шаблон:
<?php $excerpt_length = 10; the_excerpt() ?>изменение ядра-это ужасное решение, поэтому я хотел бы знать, если кто-то придумает что-то лучше.
Я бы сделал так :
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должен возвратить приведенный отрывок- не так обрезать слова/strip shortcodes С
the_content
здесь это статья об использовании пользовательской длины отрывка в WordPres. Существует несколько способов ограничить и контролировать длину выдержки поста.
- ограничьте длину отрывка или длину содержимого сообщения, используя количество слов.
- ограничение длины отрывка до нескольких символов.
- ограничить сообщение резюме, добавив’ read more ' тег.
- включение пользовательского отрывка для написания собственного резюме для каждого сообщения.
- Выдержка-Контроль Длина с помощью фильтров
http://smallenvelop.com/limit-post-excerpt-length-in-wordpress/ Надеюсь, это вам очень поможет.
Comments