Удалить больше или […] текст из короткого поста


8

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

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

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

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

Но все, что я нахожу, это какая-то строка кода в 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, ничего не изменится!

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

Ответы:


19

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

[...]Добавляется the_excerpt(). В комплект поставки входит excerpt_moreфильтр, который специально включен для настройки текста после прочтения.

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

function new_excerpt_more( $more ) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more');

спасибо за ответ, ваш код хорошо работает для удаления [...], но шортпост ограничен и слово сокращено после некоторых символов, которые я хочу, чтобы все было нормально (все до тега read more на моем коротком посте)
Arioman

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

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

это, кажется, только удаляет ссылку «читать дальше». Это [...]все еще там.
Жюль

3

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

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

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

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

<?php 
// This will add a filter on `excerpt_more` that returns an empty string.
add_filter( 'excerpt_more', '__return_empty_string' ); 
?>

1

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

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');

0

Вы должны добавить это к вашему functions.php

    function custom_excerpt_more( $more ) {
    return '';//you can change this to whatever you want
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

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

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

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

function custom_excerpt_length( $length ) {
    return 20;//change the number for the length you want
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

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


На какие версии вы ориентируетесь, то есть до 2.9 :-)
Питер Гусен

@PieterGoosen, наверное, не тот.
Томас Кот

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

@Arioman, вы можете изменить [...] ссылку, которая гласит «Продолжайте читать», или что угодно. Теперь, если вы хотите иметь рабочие шорткоды, the_excerptэто не то, что вы ищете, вы должны добавить это к вопросу, так как ответы будут меняться.
Томас Кот

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

0

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

function custom_excerpt() {
 $text=preg_replace( "/\\[&hellip;\\]/",'place here whatever you want to replace',get_the_excerpt());
echo '<p>'.$text.'</p>';
}

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


0

'excerpt_more' - это хук WordPress. Возвращает выдержку из содержания. Чтобы удалить [...] после текста выдержки, вы можете вернуть пустое поле, как показано ниже, или ваши пользовательские требования. Используйте этот код на function.php

function custom_excerpt_more( $excerpt ) {
    return '';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.