过滤替换功能的一个实例而不替换另一个实例

时间:2012-03-10 05:47:21

标签: php wordpress

我是php的新手,并使用http://aaronrussell.co.uk/legacy/improving-wordpress-the_excerpt/中的以下代码替换the_excerpt()来电:

function improved_trim_excerpt($text) {
    global $post;
    if ( '' == $text ) {
        $text = get_the_content('');
        $text = apply_filters('the_content', $text);
        $text = str_replace('\]\]\>', ']]>', $text);
        $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
        $text = strip_tags($text, '<p>');
        $excerpt_length = 80;
        $words = explode(' ', $text, $excerpt_length + 1);
        if (count($words)> $excerpt_length) {
            array_pop($words);
            array_push($words, '[...]');
            $text = implode(' ', $words);
        }
    }
    return $text;
}

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');

我正在使用Brandford Magazine 3.0 theme,并且在我的代码中有两个the_excerpt()次调用实例。

不知何故第一个电话正在被正确替换,并且正在使用improved_trim_excerpt按预期正确显示文字,但另一个电话仍然使用旧的the_excerpt()功能。

我可以在这里找到什么?

1 个答案:

答案 0 :(得分:0)

我在任何地方都看不到the_excerpt ...但我猜你是指preg_replace?如果是这样,请尝试在正则表达式的末尾添加g标记。这将打开全局模式,因此正则表达式将匹配多次。