Получить ограниченный текстовый отрывок из поста WordPress? - PullRequest
7 голосов
/ 15 марта 2011

Я использую «Цикл» в своем собственном шаблоне темы, чтобы получить последние три сообщения из WordPress.

<?php
$args = array( 'numberposts' => 3 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>

    <!-- DATE -->
    <div class="date">
    <?php the_time('m F Y');?>
    </div>

    <!-- TITLE -->
    <div class="title">
    <?php the_title(); ?>
    </div>

    <!-- SNIPPET -->
    <div class="content">
    <?php the_excerpt(); ?>
    </div>

<?php endforeach; ?>

Все работает нормально, кроме the_excerpt().Мне нужно около 15-20 слов обычного текста из поста, чтобы показать его в качестве предварительного просмотра, вместо полной выдержки или всего текста поста.Как мне это сделать?

Ответы [ 4 ]

16 голосов
/ 27 февраля 2015

Избегайте использования substr().Почему?

substr() усекается на основе количества символов, а НЕ целых слов, а последнее слово, скорее всего, будет усечено.Он также может обрезать конечный тег (ы) HTML и возвращать искаженный HTML, испортив остальную часть вашего макета.

Не изобретайте колесо заново!новая базовая функция с именем wp_trim_words() Разбивка параметров: wp_trim_words($text, $num_words, $more); $text (string) (required) Text to trim Default: None $num_words (integer) (optional) Number of words Default: 55 $more (string) (optional) What to append if $text needs to be trimmed. Default: '…' Примеры использования: <?php echo wp_trim_words(get_the_content(), 40, '...'); ?> <?php echo wp_trim_words(get_the_excerpt(), 20, '... read more &gt;'); ?>

5 голосов
/ 15 марта 2011

Вы можете попытаться использовать что-то вроде этого, чтобы получить первые 20 слов поста, если отрывок недоступен.

$content = get_the_content();
echo substr($content, 0, 20);
2 голосов
/ 30 мая 2013

попробуйте это:

Пост содержит изображения:

$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>',']]&gt;', $content);
echo substr(strip_tags($content),0,100); 

и без изображений:

 $content = get_the_content();
 echo substr($content, 0, 25);
1 голос
/ 07 декабря 2016

Поместите этот код в functions.php

function new_excerpt_length($length) {
  return 20;}
add_filter('excerpt_length', 'new_excerpt_length');

И просто вызовите эту функцию со страницы вашего шаблона или файла index.php

the_excerpt();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...