Задать вопрос
@romanshatskikh

Как скрыть часть поста на главной странице в Wordpress без использования тега more?

Здравствуйте!
Допустим есть длинный пост.
На главной на главной выводятся части потов до тега more.

Как скрывать часть постов без использования тега more?
То есть на главной будет видна только часть поста и нет никаких "далее" "читать" "подробнее" и тд.
Но при переходе на страницу поста становится всё содержимое поста.
  • Вопрос задан
  • 936 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!
Вот, этим можно ограничить длину выводимого заголовка записи:
// длина заголовка
function the_title_excerpt($before = '', $after = '', $echo = true, $length = false) 
  {
    $title = get_the_title();

    if ( $length && is_numeric($length) ) {
        $title = substr( $title, 0, $length );
    }

    if ( strlen($title)> 0 ) {
        $title = apply_filters('the_title_excerpt', $before . $title . $after, $before, $after);
        if ( $echo )
            echo $title;
        else
            return $title;
    }
}


В шаблоне вместо the_title() используйте
<?php the_title_excerpt('', '...', true, '40');?>

Вот, так можно задавать лимит на the_excerpt в зависимости от типа записи (post, products и т.д.)
// Длина открывка excerpt
function custom_excerpt_length($length) {
    if ($post->post_type == 'post')
      return 20;
    else if ($post->post_type == 'products')
      return 65;
    else if ($post->post_type == 'portfolio')
      return 20;
    else if ($post->post_type == 'testimonial')
      return 75;
    else
      return 80;
    }
add_filter('excerpt_length', 'custom_excerpt_length');


Та же самая функция, но также можно задавать лимит не только по типу записи, но и по шаблону (см. условные теги)
// Длина открывка excerpt
function custom_excerpt_length($length) {
    global $post;
    if ($post->post_type == 'post')
      if (is_front_page() || is_home()) {
        return 20;
      } else {
        return 100;
      }
    else
      return 80;
    }
    add_filter('excerpt_length', 'custom_excerpt_length');


надеюсь, что в шаблоне главное страницы текст выводится именно в the_excerpt, а не the_content.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
san_jorich
@san_jorich
Творческий кодер
Есть несколько вариантов решения
1. Добавить к записям произвольное поле и вписывать в него текст(или дублировать часть основного текста), и выводить все это функцией с хук-фильтром the_excerpt(например)
2. Написать функцию, отлавливающую определенную последовательность символов в содержании поста (например четыре слеша "////"), и автоматически разбивающую содержимое на части(условно) анонс\полный текст. При этом последовательность вы задаете сами и пишите:
а - функцию с регуляркой и добавлением в бд, б - функцию вывода с хук фильтром
3. Написать jQuery функцию, реализующую (2) Но без php-функционала. Такая штука будет гарантированно работать отлавливая div с его содержимым на странице основного цикла вывода записей
Я бы сделал 1.. или 3)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы