Mostrare Link negli Estratti?
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.

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('\]\]\>', ']]>', $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');

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/

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

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.

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

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.

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.
