Se afișează linkurile în fragmente?

7 sept. 2011, 21:16:55
Vizualizări: 17K
Voturi: 6

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.

0
Toate răspunsurile la întrebare 4
2
12

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

Partea care rezolvă problema este $text = strip_tags($text, '<a>');, împreună cu remove_filter('get_the_excerpt', 'wp_trim_excerpt');.

7 sept. 2011 22:51:52
Comentarii

what does if ( '' == $text ) exact ce face?

MrKainig MrKainig
19 mar. 2016 15:22:17

Din păcate, linkul către Aaron Russell nu mai funcționează și există o eroare în paginarea site-ului respectiv pe pagina de articole care te împiedică să vezi toate paginile de articole :(

Amy McCrobie Amy McCrobie
19 iun. 2017 20:18:09
3

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/

23 feb. 2014 16:02:01
Comentarii

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 Pieter Goosen
26 mai 2014 09:40:36

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 Brad Dalton
26 mai 2014 10:00:10

Aceasta va funcționa doar pe site-urile care folosesc Genesis, și chiar și atunci doar cu anumite setări activate.

Greg Perham Greg Perham
7 iun. 2018 02:21:52
4

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

26 mai 2014 09:18:37
Comentarii

Te rog să menționezi afilierea ta în legătură cu acest plugin

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

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 user3162185
26 mai 2014 09:50:58

Am actualizat răspunsul tău pentru a reflecta afilierea ta.

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

Mai mult, un răspuns ar trebui să fie mai mult decât doar un link către un site extern. Te rog să adaugi o explicație: de ce ar putea rezolva problema?

Sven Sven
26 mai 2014 10:10:46
1

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.

7 iun. 2018 04:10:20
Comentarii

@cybmeta Bun punct. Am editat răspunsul meu.

Greg Perham Greg Perham
7 iun. 2018 21:09:13