Permitir HTML em trecho

Aqui está o meu código de trecho.

// Generate custom excerpt length function wpbx_excerpt_length($length) { return 300; } add_filter('excerpt_length', 'wpbx_excerpt_length'); 

Como eu permito html como

Solutions Collecting From Web of "Permitir HTML em trecho"

GUIA COMPLETO DE EXCELÊNCIAS

Recentemente, respondi algumas perguntas sobre excertos, então vou dar uma explicação detalhada que abranja tanto quanto posso.

PREFÁCIO

Parece haver algumas questões que surgem a partir desta resposta sobre onde o código deve ir, e a resposta é, é realmente importante para você e como você entende. Existem algumas opções em que você pode colocar o código (se não for explicitamente indicado):

  • Nas funções do seu tema.php ou qualquer arquivo, use como um arquivo de funções. Basta lembrar quando você faz isso, se o tema não é o seu, todas as mudanças serão perdidas quando você atualizar seu tema

  • Uma maneira melhor seria usar o código em um tema infantil. Como acima, no arquivo functions.php ou funções relacionadas

  • Use o código em um plugin. Esta é a maneira preferida, pois isso torna o código disponível em todos os temas. Se você alternar temas, não precisa se preocupar em rewrite o mesmo código.

Espero que isso acerte um pouco 🙂

HTML TAGS / FORMATTING

the_excerpt() primeiro não aceita nenhum parâmetro, então nada pode ser passado para ele. É um fato que the_excerpt() o conteúdo para 55 palavras e todas as tags HTML são despojadas antes de retornar o texto. the_excerpt() está localizado em wp-includes / post-template.php . Para permitir certas ou todas as tags HTML no trecho, um novo excerto deve ser criado.

Antes de tudo, a function original precisa ser removida primeiro e, em seguida, a nova function precisa ser conectada ao get_the_excerpt . Por favor, tome nota, este novo trecho ainda será the_excerpt() como the_excerpt() em arquivos de modelo, não é necessário alterar isso. get_the_excerpt() está localizado em wp-includes / post-template.php .

O trecho usa wp_trim_excerpt para retornar o texto aparado, então precisamos primeiro remover o wp_trim_excerpt do filtro de wp_trim_excerpt . wp_trim_excerpt() está localizado em wp-includes / formatting.php , linha 2355. É assim:

 remove_filter('get_the_excerpt', 'wp_trim_excerpt'); 

Agora você pode adicionar seu novo trecho para get_the_excerpt

 add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt'); 

Para permitir as tags / formatação html, precisamos especificar quais tags você precisará permitir. Você pode usar a seguinte declaração strip_tags para conseguir isso

 $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); 

O segundo argumento wpse_allowedtags() é uma pequena function que é usada para adicionar as tags que the_excerpt() permitirá. Para obter uma lista completa de tags HTML 5 válidas, vá e confira aqui . Aqui está a function, adicione todas as tags html a isso que você precisa para permitir / manter

 function wpse_allowedtags() { // Add custom tags to this string return ' 

Se você precisa permitir que todas as tags HTML, ou seja, sem remoção de tags, a function strips_tags() pode ser omitida / removida completamente.

Um ponto a seguir no entanto, quando as tags html são permitidas, essas tags são contadas como palavras, então a contagem de palavras para trechos com tags e sem tags não será a mesma. Para corrigir isso, você precisará remover essas tags da contagem de palavras real primeiro para que apenas as palavras sejam contadas.

Eu escrevi um trecho que permitirá todas as tags, conte apenas palavras como palavras e complete uma frase após a quantidade definida de palavras (para que o texto não seja cortado no meio da frase) e adicione uma leitura mais texto após a última palavra .

Aqui está o código completo

 function wpse_allowedtags() { // Add custom tags to this string return '

Você pode simplesmente remover o '//' das funções que você precisa extra.

LONGITUDES DE EXTRAÇÃO PERSONALIZADAS

Às vezes você precisa exibir trechos simples de diferentes comprimentos e não é viável escrever um trecho para cada publicação / function / página. Aqui está uma pequena e pequena function usando wp_trim_words

 function wpse_custom_excerpts($limit) { return wp_trim_words(get_the_excerpt(), $limit, '' . ' …' . __( 'Read more  »', 'wpse' ) . ''); } 

O que essa pequena function faz é tirar get_the_excerpt , cortando-o para $limit definido pelo usuário e retornando o texto com um link de leitura mais no final.

Você pode chamar esse trecho como segue em seu modelo

 echo wpse_custom_excerpts($limit); 

onde $limit será sua contagem de palavras, então um trecho de 30 palavras será

 echo wpse_custom_excerpts(30); 

Apenas uma coisa para lembrar aqui, se você definir seu limite para mais de 55 palavras, apenas 55 palavras serão retornadas, pois o trecho tem apenas 55 palavras. Se existirem trechos mais longos, use get_the_content vez disso.

LONGITUDE DE EXTRAÇÃO PERSONALIZADO

Se você precisa apenas alterar o comprimento the_excerpt() , você pode usar a seguinte function

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

Lembre-se, você precisará definir uma prioridade maior do que 10 para que sua function personalizada seja executada após o padrão.

ADD READ MORE LINK

Todo o texto retornado pelo trecho tem o odiado [...] no final que não é clicável. Para adicionar um texto mais lido no lugar do hellips, use esta function

  function wpse_excerpt_more( $more ) { return ' ' . __('Read More', 'your-text-domain') . ''; } add_filter( 'excerpt_more', 'wpse_excerpt_more' ); 

EDITAR

Excerto primeiro parágrafo

Eu quero manter isso completo, então aqui está o trecho que termina depois do primeiro parágrafo

Aqui está uma function que mantém as tags HTML no tato, adiciona um link "Leia mais" no final do trecho e abre o trecho após o primeiro parágrafo.

 if ( ! function_exists( 'wpse0001_custom_wp_trim_excerpt' ) ) : function wpse0001_custom_wp_trim_excerpt($wpse0001_excerpt) { global $post; $raw_excerpt = $wpse0001_excerpt; if ( '' == $wpse0001_excerpt ) { $wpse0001_excerpt = get_the_content(''); $wpse0001_excerpt = strip_shortcodes( $wpse0001_excerpt ); $wpse0001_excerpt = apply_filters('the_content', $wpse0001_excerpt); $wpse0001_excerpt = substr( $wpse0001_excerpt, 0, strpos( $wpse0001_excerpt, '' ) + 4 ); $wpse0001_excerpt = str_replace(']]>', ']]>', $wpse0001_excerpt); $excerpt_end = ' ' . ' » ' . sprintf(__( 'Read more about: %s  »', 'pietergoosen' ), get_the_title()) . ''; $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); //$pos = strrpos($wpse0001_excerpt, ' 

EDITAR 29-10-2015

Para quem precisa de uma solução alternativa para não exibir o link de leitura mais após o trecho quando o trecho for menor que a quantidade de palavras definidas, veja a seguinte pergunta e resposta

  • Leia mais tags aparecem em CADA postagem