Різна довжина цитат для блога
8, Січ, 2013
Без зайвих слів, припустимо, що у вас є різні категорії в яких потрібно виводити цитати різної довжини.
Це може бути зумовлене різним дизайном категорій, чи просто вам так подобається, це не має великого значення і тому давайте поглянемо на різні варіанти вирішення цієї проблеми.
1. Заміна довжини цитати на всьому блогу
Припустимо, у вас невеликий блог і все, що вам потрібно це змінити стандартну довжину цитати. Тоді беремо наступну функцію і записуємо її у functions.php вашої теми.
1 2 3 4 5 |
function custom_excerpt_length() { $length = 100; return $length; } add_filter('excerpt_length', 'custom_excerpt_length'); |
Цифра 100 – вказує на кількість слів в цитаті
2. Заміна довжини цитати у певній категорії
Якщо вам потрібно змінити довжину цитати у певній категорії, тоді записуємо у functions.php наступне.
1 2 3 4 5 6 7 8 |
add_filter('excerpt_length', 'my_excerpt_length'); function my_excerpt_length($length) { if(in_category(12)) { return 80; } else { return 100; } } |
“in_category(12)” – 12 це ID категорії.
“return 80” – тут вказуємо довжину цитати, для вибраної категорії.
“return 100” – для всіх інших категорій, довжина цитати буде мати 120 слів.
3. Заміна довжини цитати у кількох категоріях
Для заміни довжини слів у різних категоріях, вписуємо наступний код у functions.php вашої теми.
1 2 3 4 5 6 7 8 9 10 11 |
add_filter('excerpt_length', 'my_excerpt_length'); function my_excerpt_length($length) { if(in_category(11)) { return 100; } elseif(in_category(12)) { return 110; } elseif(in_category(13)) { return 120; } else { return 180; } |
“in_category()” – ID категорії.
“return 100” – тут вказуємо довжину цитати, для категорії з ID 11.
“return 110” – довжина цитати, для категорії з ID 12.
“return 120” – довжина цитати, для категорії з ID 13.
“return 180” – для всіх інших категорій, довжина цитати буде мати 180 слів.
4. Заміна стандартного […] на свій варіант
Як ми знаємо, WordPress автоматично додає […] в кінець цитати. Щоб замінити таку “красоту” на будь який свій варіант, достатньо додати у functions.php вашої тами наступне.
1 2 3 4 5 |
function new_excerpt_more($more) { global $post; return ' <a href="'. get_permalink($post->ID) . '">Далі...</a>'; } add_filter('excerpt_more', 'new_excerpt_more'); |
“Далі…” – це те на, що ми замінюємо […]. Ви можете написати будь який інший текст.
5. Заміна довжини цитати на свою
Щоб не гратись із категоріями, та й не завжди це кращий варіант, ви можете для кожного поста, де використовується цитата, вказати свою довжину. У functions.php вписуємо наступне.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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(); ?> вказати свою довжину цитати.
Примір: <?php echo excerpt(25); ?> Де 25 це кількість слів.
6. Заміна довжини цитати на свою, ще один варіант
Варіант схожий на попередній, але тепер із кількома шаблонними параметрами. Додаємо у functions.php вашої теми.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class Excerpt { public static $length = 55; public static $types = array( 'short' => 25, 'regular' => 55, 'long' => 100 ); public static function length($new_length = 55) { Excerpt::$length = $new_length; add_filter('excerpt_length', 'Excerpt::new_length'); Excerpt::output(); } public static function new_length() { if( isset(Excerpt::$types[Excerpt::$length]) ) return Excerpt::$types[Excerpt::$length]; else return Excerpt::$length; } public static function output() { the_excerpt(); } } function my_excerpt($length = 55) { Excerpt::length($length); } |
Як бачимо, тепер ми маємо кілька параметрів. А саме: ‘short’ => 25, ‘regular’ => 55, ‘long’ => 100. Кожному присвоєно кількість слів, які будуть виводитись.
Примір: <?php my_excerpt(‘short’); ?> він же аналогічний запису: <?php my_excerpt(25); ?>.
На цьому все. Успіхів і натхнення Вам!
0