Se afișează linkurile în fragmente?
Am o problemă cu the_excerpt și nu găsesc răspunsul nicăieri... Pur și simplu vreau să permit ca linkurile să fie clickable când sunt afișate prin the_excerpt! Trebuie să existe o funcție pentru asta, în loc să depind de un plugin. Dar nu o găsesc, iar pluginurile avansate pentru fragmente sunt atât de complexe încât nu pot găsi fragmentul mic de cod care face asta.
Puteți folosi scriptul pe care l-am găsit aici: http://aaronrussell.co.uk/legacy/improving-wordpress-the_excerpt/
L-am modificat pentru a afișa link-uri în rezumat și am eliminat unele dintre celelalte funcții:
<?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');
?>
Partea care rezolvă problema este $text = strip_tags($text, '<a>');, împreună cu remove_filter('get_the_excerpt', 'wp_trim_excerpt');.
Codul permite practic unei liste de tag-uri HTML separate prin virgulă să funcționeze în rezumatele tale, care în mod normal sunt eliminate de WordPress. Testat pe Genesis și funcționează.
add_filter( 'get_the_content_limit_allowedtags', 'get_the_content_limit_custom_allowedtags' );
function get_the_content_limit_custom_allowedtags() {
// Adaugă tag-uri personalizate în acest șir
return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>';
}
Sursa http://daan.kortenba.ch/add-tags-to-genesis-content-limit-in-content-archives/
Brad, poți să adaugi o scurtă descriere a ceea ce face codul tău și cum funcționează? Doar să dai un cod nu este un răspuns constructiv
Pieter Goosen
Cu plăcere, Pieter. Practic, codul permite utilizarea unei liste de tag-uri HTML separate prin virgulă în rezumatele tale, care în mod normal sunt eliminate de WordPress. Testat pe Genesis și funcționează.
Brad Dalton
Puteți utiliza următorul plugin pentru a permite link-uri și alte tag-uri HTML în rezumate
Plugin: Show links in excerpts wordpress
Nu am nicio afiliere în legătură cu acest plugin
Folosesc plugin-ul WordPress Advanced Excerpts din prima zi în care am început să administrez blogul meu: weblogcode. Este foarte ușor de utilizat. Nu a fost actualizat, dar este compatibil cu WordPress 3.9. Sper ca autorul plugin-ului Advanced Excerpts îl va actualiza în curând. Sunt doar un utilizator de bază al acestui plugin WordPress.
user3162185
WordPress elimină tagurile în wp_trim_words(), care este apelat de get_the_excerpt(); așa că trebuie să filtrăm 'wp_trim_words', practic copiind acea funcție cu o singură modificare: înlocuim wp_strip_all_tags() cu strip_tags().
Nu dorim ca alte funcții care folosesc wp_trim_words să fie modificate, așa că adăugăm filtrul nostru în timp ce get_the_excerpt() rulează și îl eliminăm când am terminat.
// Permite link-uri în rezumate
function sg_trim_words( $text, $num_words, $more, $original_text ) {
$text = strip_tags( $original_text, '' );
// @See wp_trim_words în 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 );
}
// Elimină filtrul pentru a nu afecta alte funcții care folosesc wp_trim_words
remove_filter( 'wp_trim_words', 'sg_trim_words' );
return $text;
}
// Adaugă filtrul wp_trim_words în timpul filtrului excerpt_more, care este apelat imediat înainte
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 );
Am scris acest gist după ce am analizat alte metode sugerate, deoarece cred că aceasta este o soluție mai direcționată. Gist-ul va fi actualizat pe măsură ce avansez.