从WordPress帖子获取有限的纯文本摘录?

时间:2011-03-15 04:03:48

标签: php arrays wordpress function foreach

我在自己的主题模板中使用“The Loop”来获取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 个答案:

答案 0 :(得分:16)

避免使用substr()。为什么?

substr()根据字符数而不是整个单词进行截断,最后一个单词最有可能被截断。它还可以截断结束HTML标记并返回格式错误的HTML,从而搞砸了其余的布局。

不要重新发明轮子!

WordPress 3.3以后有一个名为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;'); ?>

答案 1 :(得分:5)

如果没有可用的摘录,您可以尝试使用此类内容来获取帖子的前20个单词。

$content = get_the_content();
echo substr($content, 0, 20);

答案 2 :(得分:2)

试试这个:

发布包含图片:

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

答案 3 :(得分:1)

将此代码放在functions.php

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

只需从模板页面或index.php文件中调用此函数

the_excerpt();