如何在摘录中显示链接?

时间:2020-10-03 作者:mario

我看不到如何在摘录中显示链接。

许多帖子建议尝试以下内容,但我无法提供摘录中的链接。我错过了什么?

在内部functions.php 我定义了我的主题:

function improved_trim_excerpt( $text = \'\', $post = null ) {
$raw_excerpt = $text;

if ( \'\' === trim( $text ) ) {
    $post = get_post( $post );
    $text =  get_the_content( \'\', false, $post );
    $text = strip_shortcodes( $text );
    $text = excerpt_remove_blocks( $text );

    /** This filter is documented in wp-includes/post-template.php */
    $text = apply_filters( \'the_content\', $text );
    $text = str_replace( \']]>\', \']]>\', $text );
    
    $text = preg_replace(\'@<script[^>]*?>.*?</script>@si\', \'\', $text);
    $text = strip_tags($text, \'<p>\');   // to keep par
    $text = strip_tags($text, \'<a>\');   // to keep links

    /* translators: Maximum number of words used in a post excerpt. */
    $excerpt_length = intval( _x( \'55\', \'excerpt_length\' ) );

    /**
     * Filters the maximum number of words in a post excerpt.
     *
     * @since 2.7.0
     *
     * @param int $number The maximum number of words. Default 55.
     */
    $excerpt_length = (int) apply_filters( \'excerpt_length\', $excerpt_length );

    /**
     * Filters the string in the "more" link displayed after a trimmed excerpt.
     *
     * @since 2.9.0
     *
     * @param string $more_string The string shown within the more link.
     */
    $excerpt_more = apply_filters( \'excerpt_more\', \' \' . \'[&hellip;]\' );
    $text         = wp_trim_words( $text, $excerpt_length, $excerpt_more );
}

/**
 * Filters the trimmed excerpt string.
 *
 * @since 2.8.0
 *
 * @param string $text        The trimmed text.
 * @param string $raw_excerpt The text prior to trimming.
 */
return apply_filters( \'improved_trim_excerpt\', $text, $raw_excerpt );
}
我在content.php

remove_filter(\'get_the_excerpt\', \'wp_trim_excerpt\');
add_filter(\'get_the_excerpt\', \'improved_trim_excerpt\');
$main_content = apply_filters( \'the_content\', get_the_excerpt() );

1 个回复
SO网友:Trisha

首先,我建议您将p和a标记组合成一行,如下所示:

$text = strip_tags($text, \'<p><a>\'); 
其次,remove\\u过滤器和add\\u过滤器应该放在函数中。php文件,而不是内容。php。。。。。将这些行移到$text=strip\\u标记的正下方。。。。。

我认为您不需要包含$main\\u content=apply\\u过滤器的行,因为我以前从未见过这样的行。在不使用它的情况下,在移动其他两行之后尝试它,但如果您发现需要它,那么它也会进入您的函数中。php文件。

编辑:这是我的全部代码,以防对其他人有所帮助。这可以很好地保留粗体(and)、斜体(and)和链接()。这些是我在摘录中允许的唯一标记,但可以根据您的需要进行修改。这是我的孩子主题的功能。php文件,这样可以避免主题更新。

    // Improves the look of the excerpt, more words, allows bolding
function improved_trim_excerpt($text) {
$raw_excerpt = $text;
if ( \'\' == $text ) {
    $text = get_the_content(\'\');
    $text = strip_shortcodes( $text );
    $text = apply_filters(\'the_content\', $text);
    $text = str_replace(\'\\]\\]\\>\', \']]&gt;\', $text);
    $text = strip_tags($text, \'<b><strong><em><i><a>\');
    $excerpt_length = apply_filters(\'excerpt_length\', 45);
    $newexcerpt_more = apply_filters(\'excerpt_more\', \'new_excerpt_more\');
    $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 . $newexcerpt_more;
        $text = force_balance_tags( $text );
    } else {
        $text = implode(\' \', $words);
        $text = force_balance_tags( $text );
    }
}
return $text;
}
remove_filter(\'get_the_excerpt\', \'wp_trim_excerpt\');
add_filter(\'get_the_excerpt\', \'improved_trim_excerpt\');

相关推荐

定制的get_the_excerpt()仅在第一次发布时有效

我使用自定义get_the_excerpt 功能在我的主题中。它对循环中的第一篇文章非常有效,但其他文章都使用了标准的摘录功能。我不明白为什么?海关get_the_excerpt 功能:function wpse_allowedtags() { // Add custom tags to this string return \'<br>,<b>,<strong>,<em>,<i>,<ul>,<o