2

我试图弄清楚是否有可能从每个帖子中获取摘录,从每个帖子中获取第一段。我目前正在使用 ACF 插件并具有自定义帖子类型和自定义字段。这是我的代码:

function custom_field_excerpt() {
    global $post;
    $text = get_field('news');
    if ( '' != $text ) {
        $text = strip_shortcodes( $text );
        $text = apply_filters('the_content', $text);
        $text = str_replace(']]>', ']]>', $text);
        $excerpt_length = 20; // 20 words
        $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
    }
    return apply_filters('the_excerpt', $text);
}

这很好用,但它只修剪前 20 个单词(或您指定的任何单词),我正在尝试调整它以拉入每个帖子的第一段而不是前 20 个单词。这是可能吗?

4

3 回答 3

0

因为我们知道内容是裸露的(只是文本),所以您可以简单地通过\n字符分解内容,然后假设新数组中的第一个元素是第一段。您可能能够以更有效的方式执行此操作,但功能如下:

你的新功能

function custom_field_excerpt() {
  global $post;
  $text = get_field('news');
  if ( '' != $text ) {
    $text = strip_shortcodes( $text );
    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]>', $text);
    $text_paragraphs = explode("\n",$text);
    $text = $text_paragraphs[0];
  }
  return $text;
}
于 2013-02-26T21:50:20.683 回答
0

这是正确的代码,将其添加到您的 functions.php 文件中

// Add custom excerpt length
function custom_excerpt($excerpt_length) {
    $content = get_field('custom_field_name');
        $text = strip_shortcodes( $content );
        //$text = apply_filters('the_content', $text);
        $text = str_replace(']]>', ']]>', $text);
        $text = strip_tags($text);
        $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
        if ( count($words) > $excerpt_length ) {
            array_pop($words);
            $text = implode(' ', $words);
            $text = $text . $excerpt_more;
        } else {
            $text = implode(' ', $words);
        }

    echo $text;
}

然后使用 < ?php custom_excerpt('12'); ?> 指定模板中的长度(删除上面 php 标记中的空格)

对于其他可能发现这一点的人 - 如果您使用的是 the_content 而不是 ACF,那么只需更改 $content = get_field('blog_article_text'); TO $content = get_the_content();

于 2013-04-09T22:32:51.217 回答
-1

尝试用 strlen($text) 替换 $excerpt_length

        $text = wp_trim_words( $text, strlen($text), $excerpt_more );
于 2013-02-26T21:23:19.493 回答