Удаление ссылки "Продолжить чтение" только из тизерного отрывка

25 янв. 2013 г., 23:11:37
Просмотры: 18K
Голосов: 6

Я хочу удалить ссылку "Продолжить чтение" только из тизерного отрывка, не затрагивая автоматический отрывок. Какой фильтр для этого использовать?

Вот оригинальный код из шаблона Showcase Template Page Template:

    <?php while ( have_posts() ) : the_post(); ?>

<?php
    if ( '' != get_the_content() )
        get_template_part( 'content', 'intro' );
?>

<?php endwhile; ?>

А вот код самого Intro:

<div class="entry-content">
    <?php the_content(); ?>
    <?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Страницы:', 'mytheme' ) . '</span>', 'after' => '</div>' ) ); ?>
    <?php edit_post_link( __( 'Редактировать', 'mytheme' ), '<span class="edit-link">', '</span>' ); ?>
</div><!-- .entry-content -->

-->

1
Комментарии

Нам нужно увидеть весь ваш код, не могли бы вы опубликовать содержимое content-intro.php? Возможно, стоит посмотреть, что делает get_template_part =p

Tom J Nowell Tom J Nowell
26 янв. 2013 г. 01:07:07
Все ответы на вопрос 5
1

Изменение стандартного текста для всех анонсов:

function custom_excerpt_more($more) {
   global $post;
   $more_text = '...';
   return '… <a href="'. get_permalink($post->ID) . '">' . $more_text . '</a>';
}
add_filter('excerpt_more', 'custom_excerpt_more');

Создание собственной функции для анонсов:

// Функция анонсов от Rafael Marques ;)
function rm_excerpt($limit = null, $separator = null) {

    // Установка стандартного лимита слов
    if (is_null($limit)){
        $excerpt = explode(' ', get_the_excerpt(), '15');
    } else {
        $excerpt = explode(' ', get_the_excerpt(), $limit);
    }

    // Установка стандартного разделителя
    if (is_null($separator)){
        $separator = '...';
    }

    // Генератор анонса
    if (count($excerpt)>=$limit) {
        array_pop($excerpt);
        $excerpt = implode(" ",$excerpt).$separator;
    } else {
        $excerpt = implode(" ",$excerpt);
    }   
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
    echo $excerpt;
}

Используйте <?php rm_excerpt(); ?> когда хотите вывести кастомный анонс. Первое значение устанавливает лимит слов, второе - разделитель. Пример: <?php rm_excerpt(10,' (...)'); ?>. Чтобы создать отдельную ссылку "читать далее", вставьте <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">Читать далее?</a>

25 янв. 2013 г. 23:50:31
Комментарии

Хорошо, значит нет конкретного фильтра, который изменяет только тизер?

Marcus Marcus
26 янв. 2013 г. 00:01:49
0
add_filter( 'the_content_more_link', 'wpsites_read_more_link' );
function wpsites_read_more_link() {
return '<a class="more-link" href="' . get_permalink() . '"></a>';
}

Добавьте этот код в файл функций, и он уберет ссылку "Читать далее".

http://codex.wordpress.org/Customizing_the_Read_More

30 июн. 2014 г. 07:21:26
12

Похоже, вы хотите убрать текст "Продолжить чтение" из the_content(). Если это так, вам подойдет пример из Кодекса:

Техники "Read More"

Параметры тега шаблона the_content() следующие:

<?php the_content( $more_link_text , $strip_teaser ); ?>

$more_link_text устанавливает текст ссылки, например "Читать далее". Второй параметр, $strip_teaser, определяет, должна ли ссылка "more" быть скрыта (TRUE) или отображена (FALSE). По умолчанию FALSE, что показывает текст ссылки.

Чтобы убрать тизер:

Замените the_content(); в вашем index.php на (второй параметр управляет этим):

`the_content('',TRUE,'')`

Добавьте <!--noteaser--> в текст записи сразу после <!--more-->.

ОБНОВЛЕНИЕ
Судя по вашему коду, вы добавили код не в то место. Не видя ваши файлы, скорее всего вам нужно перейти в content.php и найти the_content(), чтобы внести изменения там. Я проверил это на одной из своих тем, использующих шаблоны, и это работает. Вам также стоит больше почитать о шаблонах, чтобы понимать, как они работают. Вкратце:

1 - Удалите этот текст из вашего кода: if ( '' != get_the_content('',TRUE,'')
2 - Перейдите в content.php вашей темы, найдите the_content() и замените на the_content('',TRUE,'')
3 - Добавьте <!--noteaser-->, как указано выше

Это актуально, если вы используете <!--more--> для ручной настройки цитат.

26 янв. 2013 г. 00:00:09
Комментарии

Привет chowwy — я увидел это и предположил, что это убирает тизер полностью, а не просто удаляет ссылку "Читать далее". Разве это не так?

Marcus Marcus
26 янв. 2013 г. 00:04:27

Похоже, что $strip_teaser указывает, должна ли ссылка "more" быть скрыта/показана. Не говорит о том, что сам отрывок удаляется.

chowwy chowwy
26 янв. 2013 г. 00:05:46

chowwy — не работает. Обрати внимание, что там сказано размещать тег <!--noteaser--> после тега more, что не применимо к тизерным отрывкам, так как у них нет тегов more. Понятно? Я попробовал вставить <!--noteaser--> в редакторе в любом случае, но ничего не получилось.

Marcus Marcus
26 янв. 2013 г. 00:17:59

Маркус, у тебя есть какой-то код, который мы можем посмотреть? Это в цикле как the_content() или ты используешь the_excerpt() где-то еще?

chowwy chowwy
26 янв. 2013 г. 00:21:03

Я только что добавил его в вопрос

Marcus Marcus
26 янв. 2013 г. 00:30:29

Маркус, я обновил свой ответ.

chowwy chowwy
26 янв. 2013 г. 01:24:27

Для ясности, как можно вставить <!--noteaser--> в поле ручного отрывка после тега <!--more-->, если поле ручного отрывка по умолчанию не использует тег <!--more-->? Кажется, мы говорим о разных вещах.

Marcus Marcus
26 янв. 2013 г. 01:45:56

Когда я говорю "ручной отрывок", я имею в виду, что вы решаете, где обрезать текст в редакторе записи, а не используете отдельное поле для отрывка. Если вы используете поле отрывка, этот вопрос/ответ может быть полезен - http://wordpress.stackexchange.com/questions/26837/how-to-remove-read-on-content-in-the-excerpt

chowwy chowwy
26 янв. 2013 г. 01:53:26

Вот почему я использовал слово "тизер", потому что иногда WP смешивает "ручной отрывок" с "тизерным отрывком", как вы можете видеть здесь, где проводится различие между тизером и ручным отрывком: "Ручной отрывок WordPress часто путают с автоматическим отрывком или с тизером (частью записи, которая появляется на главной странице при использовании тега More). Хотя оба связаны с ручным отрывком, они отличаются от него."

Marcus Marcus
26 янв. 2013 г. 02:04:08

Маркус, в статье, на которую вы ссылаетесь, указано, что тизер — это часть записи, которая отображается на главной странице при использовании тега More. Именно поэтому я дал вам ответ, касающийся тизера. Удачи вам.

chowwy chowwy
26 янв. 2013 г. 02:13:18

Мне очень жаль. Я с 3:30 занимаюсь этой задачей и совершенно неправильно прочитал кодекс, когда открывал тикет. Большое спасибо за ваше время.

Marcus Marcus
26 янв. 2013 г. 02:24:01

Без проблем. Надеюсь, вы во всем разберетесь.

chowwy chowwy
26 янв. 2013 г. 14:55:08
Показать остальные 7 комментариев
0
//.... get_the_content() .....//

Просто отредактируйте эту часть следующим образом: get_the_content("")

С помощью "" вы сделаете содержимое пустым. Таким образом, у вас останется только текст контента без ссылки "Читать далее" :-)

3 мая 2015 г. 09:03:00
1
-2

Мне пришлось зайти в папку wp-includes, внутри файла formatting.php и отредактировать строку 3284, изменив стандартное количество слов в отрывке на очень большое число, вот так:

    $excerpt_length = apply_filters( 'excerpt_length', 550000000000000 );

По умолчанию стоит всего 55

9 нояб. 2016 г. 20:34:50
Комментарии

Вам следует избегать редактирования основных файлов, таких как formatting.php, если это возможно, потому что они будут изменяться при обновлении. Вместо этого используйте фильтр excerpt_length для изменения значения.

Marcus Downing Marcus Downing
26 июл. 2017 г. 15:53:56