Mostrare Link negli Estratti?

7 set 2011, 21:16:55
Visualizzazioni: 17K
Voti: 6

Sto avendo un problema con the_excerpt e non riesco a trovare la soluzione da nessuna parte... Voglio semplicemente permettere che i link siano cliccabili quando vengono visualizzati tramite the_excerpt! Dev'esserci una funzione per farlo, senza dover dipendere da un plugin. Ma non riesco a trovarla e i plugin per estratti avanzati sono così complessi che non riesco a individuare il piccolo snippet che risolve questo problema.

0
Tutte le risposte alla domanda 4
2
12

Puoi utilizzare lo script che ho trovato qui: http://aaronrussell.co.uk/legacy/improving-wordpress-the_excerpt/

L'ho modificato per mostrare i link nell'estratto e ho rimosso alcune delle altre funzioni:

<?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');
?>

La parte che risolve il problema è $text = strip_tags($text, '<a>');. insieme a remove_filter('get_the_excerpt', 'wp_trim_excerpt');

7 set 2011 22:51:52
Commenti

what does if ( '' == $text ) esattamente fa?

MrKainig MrKainig
19 mar 2016 15:22:17

Sfortunatamente il link a Aaron Russell non funziona più e c'è un errore nell'impaginazione di quel sito nella pagina degli articoli che ti impedisce di vedere tutte le pagine degli articoli :(

Amy McCrobie Amy McCrobie
19 giu 2017 20:18:09
3

Il codice consente fondamentalmente a un elenco di tag HTML separati da virgole di funzionare nei tuoi estratti, che normalmente vengono rimossi da WordPress. Testato su Genesis e funziona.

add_filter( 'get_the_content_limit_allowedtags', 'get_the_content_limit_custom_allowedtags' );

function get_the_content_limit_custom_allowedtags() {
// Aggiungi tag personalizzati a questa stringa
return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>'; 
}

Fonte http://daan.kortenba.ch/add-tags-to-genesis-content-limit-in-content-archives/

23 feb 2014 16:02:01
Commenti

Brad, potresti aggiungere una breve descrizione di cosa fa il tuo codice e come funziona? Inserire solo il codice non è una risposta costruttiva

Pieter Goosen Pieter Goosen
26 mag 2014 09:40:36

Volentieri Pieter. Fondamentalmente il codice permette a una lista di tag HTML separati da virgola di funzionare nei tuoi estratti, che normalmente vengono rimossi da WordPress. Testato su Genesis e funziona.

Brad Dalton Brad Dalton
26 mag 2014 10:00:10

Questo funzionerà solo su siti che utilizzano Genesis, e anche in quel caso solo con particolari impostazioni attivate.

Greg Perham Greg Perham
7 giu 2018 02:21:52
4

Puoi utilizzare il seguente plugin per consentire link e altri tag HTML negli estratti

Plugin: Mostra link negli estratti di WordPress

Non ho alcuna affiliazione con questo plugin

26 mag 2014 09:18:37
Commenti

Per favore, specifica la tua affiliazione riguardo al plugin

Pieter Goosen Pieter Goosen
26 mag 2014 09:38:58

Utilizzo il plugin WordPress Advanced Excerpts dal primo giorno in cui ho iniziato a gestire il mio blog: weblogcode. È molto user-friendly. Non è stato aggiornato ma è compatibile con WordPress 3.9. Spero che l'autore del plugin Advanced Excerpts lo aggiorni presto. Sono solo un utente base di WordPress per quanto riguarda quel plugin.

user3162185 user3162185
26 mag 2014 09:50:58

Ho aggiornato la tua risposta per mostrare la tua affiliazione.

Pieter Goosen Pieter Goosen
26 mag 2014 09:55:37

Inoltre, una risposta dovrebbe essere più di un semplice link a un sito esterno. Per favore aggiungi una spiegazione: perché potrebbe risolvere il problema?

Sven Sven
26 mag 2014 10:10:46
1

WordPress rimuove i tag in wp_trim_words(), che viene chiamato da get_the_excerpt(); quindi dobbiamo filtrare 'wp_trim_words', sostanzialmente copiando quella funzione con una modifica: sostituire wp_strip_all_tags() con strip_tags().

Non vogliamo che altre funzioni che eseguono wp_trim_words vengano modificate, quindi aggiungiamo il nostro filtro mentre get_the_excerpt() è in esecuzione, e lo rimuoviamo quando abbiamo finito.

// Consenti link negli estratti
function sg_trim_words( $text, $num_words, $more, $original_text ) {
    $text = strip_tags( $original_text, '' );
    // @Vedi wp_trim_words in wp-includes/formatting.php
    if ( strpos( _x( 'words', 'Tipo di conteggio parole. Non tradurre!' ), '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 );
    }
    // Rimuovi il filtro per non influenzare altre funzioni che usano wp_trim_words
    remove_filter( 'wp_trim_words', 'sg_trim_words' );
    return $text;
}
// Furbizia: aggiungi il nostro filtro wp_trim_words durante excerpt_more, che viene chiamato subito prima
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 );

Ho scritto questo gist dopo aver esaminato altri metodi suggeriti, perché penso che questa sia una soluzione più mirata. Il gist verrà aggiornato in futuro.

7 giu 2018 04:10:20
Commenti

@cybmeta Ottimo punto. Ho modificato la mia risposta.

Greg Perham Greg Perham
7 giu 2018 21:09:13