Exibe Links em Trechos?

3

Estou com um problema no the_excerpt e não consigo encontrar a resposta em nenhum lugar ... Eu simplesmente quero permitir que os links sejam clicáveis quando eles são exibidos via the_excerpt! Tem que haver uma função para isso, ao invés de depender de um plugin. Mas não consigo encontrá-lo e os plug-ins de trechos avançados são tão complexos que não consigo encontrar o pequeno snippet que faz isso funcionar.

    
por AndrettiMilas 07.09.2011 / 20:16

4 respostas

8

Você pode usar o script que encontrei aqui: enlace

Eu o modifiquei para mostrar links no extrato e removi algumas das outras funções:

<?php
function keep_my_links($text) {
  global $post;
if ( '' == $text ) {
    $text = get_the_content('');
    $text = apply_filters('the_content', $text);
    $text = str_replace('\]\]\>', ']]&gt;', $text);
    $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
    $text = strip_tags($text, '<a>');
  }
  return $text;
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'keep_my_links');
?>

A parte que corrige é $text = strip_tags($text, '<a>'); . junto com remove_filter('get_the_excerpt', 'wp_trim_excerpt');

    
por Jeremy Jared 07.09.2011 / 21:51
1

Você pode usar o seguinte plugin para permitir links e outras tags html nos trechos

Plugin: Mostrar links em trechos de wordpress

Eu não tenho nenhuma afiliação em relação ao plugin

    
por user3162185 26.05.2014 / 08:18
1

O código basicamente permite que uma lista de tags HTML separadas por vírgula funcione em seus trechos, que normalmente são removidos pelo WordPress. Testado em Gênesis e obras.

 add_filter( 'get_the_content_limit_allowedtags', 'get_the_content_limit_custom_allowedtags' );

function get_the_content_limit_custom_allowedtags() {
// Add custom tags to this string
return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>'; 
}

Fonte enlace

    
por Brad Dalton 23.02.2014 / 15:02
0

O WordPress retira tags em wp_trim_words() , que é chamado por get_the_excerpt() ; então temos que filtrar 'wp_trim_words', basicamente copiando essa função com uma mudança: substitua wp_strip_all_tags() por strip_tags() .

Não queremos que outras funções que executam wp_trim_words sejam modificadas, por isso adicionamos nosso filtro enquanto get_the_excerpt() está sendo executado e removemos quando terminarmos.

// Allow links in excerpts
function sg_trim_words( $text, $num_words, $more, $original_text ) {
    $text = strip_tags( $original_text, '' );
    // @See wp_trim_words in wp-includes/formatting.php
    if ( strpos( _x( 'words', 'Word count type. Do not translate!' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
        $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
        preg_match_all( '/./u', $text, $words_array );
        $words_array = array_slice( $words_array[0], 0, $num_words + 1 );
        $sep = '';
    } else {
        $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
        $sep = ' ';
    }
    if ( count( $words_array ) > $num_words ) {
        array_pop( $words_array );
        $text = implode( $sep, $words_array );
        $text = $text . $more;
    } else {
        $text = implode( $sep, $words_array );
    }
    // Remove self so we don't affect other functions that use wp_trim_words
    remove_filter( 'wp_trim_words', 'sg_trim_words' );
    return $text;
}
// Be sneaky: add our wp_trim_words filter during excerpt_more filter, which is called immediately prior
function sg_add_trim_words_filter( $excerpt_length ) {
    add_filter( 'wp_trim_words', 'sg_trim_words', 10, 4 );
    return $excerpt_length;
}
add_filter( 'excerpt_more', 'sg_add_trim_words_filter', 1 );

Eu escrevi esta essência depois de analisar outros métodos sugeridos, porque acho que essa é uma solução mais direcionada. A essência será atualizada daqui para frente.

    
por Greg Perham 07.06.2018 / 03:10

Tags