Удаление текста [...] из короткой записи

21 сент. 2014 г., 14:24:29
Просмотры: 54.3K
Голосов: 14

Я использую тему, которая имеет ограничение по количеству символов для короткой записи и показывает [...] в конце ограничения символов.

Я хочу убрать это, поэтому ищу the_excerpt(); и заменяю на the_content();

Проблема решается с обычным контентом, но всё ещё остается проблема с записями типа изображений, и там есть <?php the_excerpt(); ?>, и когда я меняю это, моя короткая запись ведет себя как полная запись, и это не связано с длиной поста.

Я пытаюсь открыть все PHP файлы в теме и ищу ключевые слова, такие как: limit, length, excerpt, чтобы найти код, который определяет длину короткой записи, даже искал "[...]" во всех файлах и языках, но я не знаю, откуда это берется.

Всё, что я нашел, это несколько строк кода в function.php

if ( ! function_exists( 'string_limit_words' ) ) :
function string_limit_words($str, $limit = 18 , $need_end = false) {
    $words = explode(' ', $str, ($limit + 1));
    if(count($words) > $limit) {
        array_pop($words);
        array_push($words,'...');
    }
    return implode(' ', $words);
}
endif;

И когда я увеличиваю 18, ничего не меняется!

Какой код я должен искать?

0
Все ответы на вопрос 6
5
28

Кодекс — ваш друг и должен быть первой остановкой :-)

Символы [...] добавляются функцией the_excerpt(). Для настройки текста "Читать далее" после цитаты предусмотрен специальный фильтр под названием excerpt_more.

Чтобы убрать [...] после текста цитаты, вы можете сделать следующее:

function new_excerpt_more( $more ) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more');
21 сент. 2014 г. 15:17:02
Комментарии

спасибо за ответ

ваш код хорошо работает для удаления [...], но посты всё равно обрезаются и слова обрываются после определённого количества символов

Я хочу нормальное поведение (чтобы в кратком отображении поста показывалось всё, что находится до тега "читать далее")

Arioman Arioman
21 сент. 2014 г. 18:00:13

ещё один вопрос просто из любопытства - как можно заменить [...] на что-то другое, например [ далее... ]

Arioman Arioman
21 сент. 2014 г. 18:00:58

Вам стоит прочитать этот пост. Я описал там практически всё. Надеюсь, это поможет :-). Не забудьте принять мой ответ, если он помог решить вашу проблему.

Pieter Goosen Pieter Goosen
21 сент. 2014 г. 18:04:21

это, кажется, удаляет только ссылку "читать далее". Символы [...] всё ещё остаются.

Jules Jules
21 сент. 2017 г. 11:02:24

Отлично, это также работает для блока "Цитата из цикла запросов" в редакторе Gutenberg.

Iggy Iggy
25 сент. 2022 г. 03:20:42
0

Как уже отметили другие, использование хука фильтра excerpt_more — это правильный подход.

Хотел добавить, что вам не обязательно писать функцию, возвращающую пустую строку. В WordPress есть несколько встроенных функций для возврата true, false, нуля, null, пустой строки или пустого массива.

В данном случае нам нужна __return_empty_string()

Вы можете добавить этот код в ваш плагин или в файл functions.php вашей темы:

<?php 
// Это добавит фильтр на `excerpt_more`, который возвращает пустую строку.
add_filter( 'excerpt_more', '__return_empty_string' ); 
?>
23 мар. 2019 г. 15:14:43
6

Вам следует добавить это в ваш functions.php

    function custom_excerpt_more( $more ) {
    return '';//вы можете изменить это на что угодно
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

Также, использование the_excerpt имеет преимущество в том, что оно автоматически очищает контент, удаляя все изображения и другие HTML-теги.

Вы можете прочитать больше здесь

Если вы также хотите изменить длину анонса, вы можете добавить этот сниппет в ваш functions.php:

function custom_excerpt_length( $length ) {
    return 20;//измените число на желаемую длину
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

Вы можете прочитать больше об этом здесь

21 сент. 2014 г. 15:15:58
Комментарии

Какие версии вы используете, то есть до 2.9 :-)

Pieter Goosen Pieter Goosen
21 сент. 2014 г. 15:17:58

@PieterGoosen, похоже, неправильную.

Tomás Cot Tomás Cot
21 сент. 2014 г. 15:20:14

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

было бы здорово, если бы можно было как-то определять абзац вместо длины!!

// еще одна проблема с отрывками касается шорткодов - я не могу добавить видеоплеер или слайд-шоу в свой короткий пост

Arioman Arioman
21 сент. 2014 г. 18:14:24

@Arioman, вы можете заменить [...] ссылкой с текстом "Читать далее" или любым другим текстом. Если же вам нужны рабочие шорткоды, то the_excerpt не то, что вам нужно. Следует уточнить этот момент в вопросе, так как ответы будут другими.

Tomás Cot Tomás Cot
21 сент. 2014 г. 18:26:12

@TomásCot, спасибо за это замечательное руководство. Я поместил все коды (полный код) в свой function.php и удалил строку $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); чтобы разрешить все теги. Я использую видеоплеер stream для вставки видео, и он генерирует шорткоды вида: [stream flv=http://***/clip/shad.m4v embed=false share=false width=640 height=360 dock=true controlbar=over bandwidth=high autostart=false responsive=16:9 /] Но вместо отображения видеоплеера в кратком посте я получаю текст: Видео: мое видео. В чем моя проблема?

Arioman Arioman
22 сент. 2014 г. 09:34:38

Можете добавить код в вопрос?

Tomás Cot Tomás Cot
23 сент. 2014 г. 02:18:46
Показать остальные 1 комментариев
0

это работает для меня!

function change_excerpt( $text )
{
    $pos = strrpos( $text, '['); // Находим последнее вхождение символа '['
    if ($pos === false) // Если символ не найден
    {
        return $text; // Возвращаем исходный текст
    }

    return rtrim (substr($text, 0, $pos) ); // Возвращаем текст до последнего '[', обрезая пробелы справа
}
add_filter('get_the_excerpt', 'change_excerpt'); // Применяем фильтр к цитатам
21 февр. 2017 г. 07:29:41
0

'excerpt_more' — это хук WordPress. Он возвращает сокращённый вариант контента (эксперт).

Чтобы убрать многоточие [...] после текста эксперта, можно вернуть пустую строку, как показано ниже, или реализовать свои требования. Используйте этот код в файле function.php

function custom_excerpt_more( $excerpt ) {
    return '';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );
13 июн. 2019 г. 12:00:35
0

Попробуйте создать новую функцию в вашем functions.php:

function custom_excerpt() {
 $text=preg_replace( "/\\[&hellip;\\]/",'замените здесь на любой нужный вам текст',get_the_excerpt());
echo '<p>'.$text.'</p>';
}

Затем используйте новую функцию на вашей странице.

16 июн. 2016 г. 14:13:37