Удаление ссылки "Продолжить чтение" только из тизерного отрывка
Я хочу удалить ссылку "Продолжить чтение" только из тизерного отрывка, не затрагивая автоматический отрывок. Какой фильтр для этого использовать?
Вот оригинальный код из шаблона 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 -->
-->

Изменение стандартного текста для всех анонсов:
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>

add_filter( 'the_content_more_link', 'wpsites_read_more_link' );
function wpsites_read_more_link() {
return '<a class="more-link" href="' . get_permalink() . '"></a>';
}
Добавьте этот код в файл функций, и он уберет ссылку "Читать далее".

Похоже, вы хотите убрать текст "Продолжить чтение" из 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-->
для ручной настройки цитат.

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

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

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

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

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

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

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

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

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

Мне пришлось зайти в папку wp-includes, внутри файла formatting.php и отредактировать строку 3284, изменив стандартное количество слов в отрывке на очень большое число, вот так:
$excerpt_length = apply_filters( 'excerpt_length', 550000000000000 );
По умолчанию стоит всего 55
