• Сайт в две колонки, в одной краткие посты, в другой анонсы постов.
    На сайте много информации и чтобы не расставлять по всюду <!—more—> использую excerpt.
    На форуме нашел решение:
    function new_excerpt_length($length) {
    return 55;
    }
    add_filter(‘excerpt_length’, ‘new_excerpt_length’);
    и
    <?php the_excerpt();?>
    в кратком посте, но для анонса 55 слов очень много и мне нужно его каким то образом обрезать не используя <!—more—>, скажем до 12 слов. Как?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • 55 заменить на 12

    Тогда в кратком посте будет 12 слов. Внимательней читайте … .
    Одна страница, в двух местах нужно обрезать контент. В одном месте должно быть 55 слов в другом 12.

    как вы цикл вывода организовали? если раздельно — в одной одна функция, в другой колонке другая функция…
    или через сменяемую переменную — все зависит от того, как у вас организован цикл вывода….
    =====
    и жирным шрифтом можете не писать — я с хорошим зрением..

    Модератор Юрій

    (@yube)

    В одном месте должно быть 55 слов в другом 12.

    Взять результат get_the_excerpt (55 слов), обрезать до 12 и вывести в «другом месте». Помогут функции explode(), array_slice() и implode().

    Atrax

    (@atrax)

    Ethical engineer

    Внимательней читайте …

    А повежливее — никак? Люди вам помогают, если чё…

    Внимательней читайте …

    А повежливее — никак? Люди вам помогают, если чё…

    Хотелось бы знать что я тут не вежливого написал? Вы думаете ответ «55 заменить на 12» мне сильно помог? Можно было сразу написать «гугл в помощь». А за помощь (тем кто реально помогает и показывает хоть кусок пхп кода) БОЛЬШОЕ спасибо.

    как вы цикл вывода организовали? если раздельно — в одной одна функция, в другой колонке другая функция…
    или через сменяемую переменную — все зависит от того, как у вас организован цикл вывода….

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

    Взять результат get_the_excerpt (55 слов), обрезать до 12 и вывести в «другом месте». Помогут функции explode(), array_slice() и implode().

    Спасибо Вам, функции предложенные Вами не использовал, но когда искал нашел решение своего вопроса.

    РЕШЕНИЕ.
    В 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
        );
    
      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);
    }

    Страница выглядит так:

    с лева
    цикл кратких постов
    <?php my_excerpt('regular'); ?>(55 слов)
    конец цикла

    с права
    цикл анонсов
    <?php my_excerpt('short'); ?>(25 слов)
    конец цикла

    Не знаю насколько правильной код, но работает. Если кто знает как улучшить, предлагайте.
    ВСЕМ СПАСИБО

    Atrax

    (@atrax)

    Ethical engineer

    Хотелось бы знать что я тут не вежливого написал?

    Я указал — что. Вы это даже «заоверквотили».
    Учить вас хорошим манерам не буду.
    В следующий раз просто удалю.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Нужно дважды использовать excerpt. КАК?» закрыта для новых ответов.