Cum să elimini linkul "Continue Reading" doar din excerpt-ul teaser

25 ian. 2013, 23:11:37
Vizualizări: 18K
Voturi: 6

Vreau să elimin linkul "Continue Reading" doar din excerpt-ul teaser și nu din excerpt-ul automat, pentru care există deja un filtru ușor disponibil.

Acesta este codul original; provine din șablonul Showcase Template Page:

    <?php while ( have_posts() ) : the_post(); ?>

<?php
    if ( '' != get_the_content() )
        get_template_part( 'content', 'intro' );
?>

<?php endwhile; ?>

Iată secțiunea Intro:

<div class="entry-content">
    <?php the_content(); ?>
    <?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pagini:', 'mytheme' ) . '</span>', 'after' => '</div>' ) ); ?>
    <?php edit_post_link( __( 'Editează', 'mytheme' ), '<span class="edit-link">', '</span>' ); ?>
</div><!-- .entry-content -->

-->

1
Comentarii

Trebuie să vedem tot codul tău, poți posta conținutul fișierului content-intro.php? Ar fi bine să te uiți la ce face get_template_part =p

Tom J Nowell Tom J Nowell
26 ian. 2013 01:07:07
Toate răspunsurile la întrebare 5
1

Modifică textul standard pentru toate rezumatele:

function custom_excerpt_more($more) {
   global $post;
   $more_text = '...';
   return '… <a href="'. get_permalink($post->ID) . '">' . $more_text . '</a>';
}
add_filter('excerpt_more', 'custom_excerpt_more');

Creează propria funcție de rezumat:

// Funcția de rezumat a lui Rafael Marques ;)
function rm_excerpt($limit = null, $separator = null) {

    // Setează limita standard de cuvinte
    if (is_null($limit)){
        $excerpt = explode(' ', get_the_excerpt(), '15');
    } else {
        $excerpt = explode(' ', get_the_excerpt(), $limit);
    }

    // Setează separatorul standard
    if (is_null($separator)){
        $separator = '...';
    }

    // Generator de rezumat
    if (count($excerpt)>=$limit) {
        array_pop($excerpt);
        $excerpt = implode(" ",$excerpt).$separator;
    } else {
        $excerpt = implode(" ",$excerpt);
    }   
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
    echo $excerpt;
}

Folosește <?php rm_excerpt(); ?> când vrei să afișezi un rezumat personalizat. Prima valoare setează limita de cuvinte, iar a doua valoare setează separatorul. Exemplu: <?php rm_excerpt(10,' (...)'); ?>. Pentru a crea un link separat "citește mai mult", inserează <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">Citește mai mult?</a>

25 ian. 2013 23:50:31
Comentarii

Bine, deci nu există un filtru specific care să modifice doar rezumatul?

Marcus Marcus
26 ian. 2013 00:01:49
0
add_filter( 'the_content_more_link', 'wpsites_read_more_link' );
function wpsites_read_more_link() {
return '<a class="more-link" href="' . get_permalink() . '"></a>';
}

Adăugați acest cod în fișierul functions.php și va elimina link-ul "Citește mai mult".

http://codex.wordpress.org/Customizing_the_Read_More

30 iun. 2014 07:21:26
12

Se pare că dorești să elimini teaser-ul "Continue Reading" din the_content(). Dacă da, acest exemplu din Codex ar fi ceea ce ai nevoie:

Tehnici Read More

Parametrii din cadrul tag-ului de șablon the_content() sunt următorii:

<?php the_content( $more_link_text , $strip_teaser ); ?>

$more_link_text setează textul link-ului, cum ar fi "Citește mai mult". Al doilea, $strip_teaser, determină dacă link-ul "more" ar trebui să fie ascuns (TRUE) sau afișat (FALSE). Valoarea implicită este FALSE, care afișează textul link-ului.

Pentru a elimina teaser-ul:

Schimbă the_content(); din index.php în (adică, al doilea parametru controlează acest lucru):

`the_content('',TRUE,'');`

Include <!--noteaser--> în textul postării, imediat după <!--more-->.

ACTUALIZARE
Bazat pe codul tău, se pare că ai adăugat codul în locul greșit. Fără a vedea fișierele tale, probabil trebuie să mergi în content.php și să cauți the_content() și să faci modificarea acolo. Am verificat pe una din temele mele care utilizează șabloane și funcționează corect. Ar trebui de asemenea să citești mai multe despre șabloane, pentru a înțelege cum funcționează. Pe scurt:

1 - Elimină acest text din codul tău: if ( '' != get_the_content('',TRUE,'') )
2 - Mergi în content.php din tema ta și găsește the_content() și schimbă-l în the_content('',TRUE,'')
3 - Adaugă <!--noteaser--> așa cum este indicat mai sus

Aceasta este soluția dacă folosești <!--more--> pentru a configura manual extrasele.

26 ian. 2013 00:00:09
Comentarii

Salut chowwy -- am văzut asta și am presupus că elimină complet teaser-ul în loc să elimine doar link-ul "Continue Reading". Nu este corect?

Marcus Marcus
26 ian. 2013 00:04:27

Se pare că $strip_teaser indică dacă link-ul "more" ar trebui ascuns/afisat. Nu indică că excerpt-ul în sine este eliminat.

chowwy chowwy
26 ian. 2013 00:05:46

chowwy -- nu funcționează. Observă că se spune să pui tag-ul <!--noteaser--> după tag-ul more, ceea ce nu se aplică la excerpt-urile teaser pentru că ele nu au tag-uri more. Are sens? Am încercat să inserez <!--noteaser--> în editor oricum și nu am obținut nimic.

Marcus Marcus
26 ian. 2013 00:17:59

Marcus, ai ceva cod pe care îl putem vedea? Este în buclă ca the_content() sau folosești the_excerpt() în altă parte?

chowwy chowwy
26 ian. 2013 00:21:03

Tocmai l-am pus în întrebare

Marcus Marcus
26 ian. 2013 00:30:29

Marcus, mi-am actualizat răspunsul.

chowwy chowwy
26 ian. 2013 01:24:27

Pentru a fi clar, cum poți insera <!--noteaser--> în câmpul de rezumat manual după eticheta <!--more--> când câmpul de rezumat manual nu utilizează implicit eticheta <!--more-->? Nu cred că vorbim despre același lucru.

Marcus Marcus
26 ian. 2013 01:45:56

Când spun rezumat manual, înseamnă că tu decizi unde să tai textul în cadrul editorului de postare, nu folosești câmpul separat de rezumat. Dacă folosești câmpul de rezumat, această întrebare/răspuns ar putea fi utilă - http://wordpress.stackexchange.com/questions/26837/how-to-remove-read-on-content-in-the-excerpt

chowwy chowwy
26 ian. 2013 01:53:26

Acesta este motivul pentru care am folosit cuvântul "teaser", deoarece uneori WP confundă "rezumatul manual" cu "rezumatul teaser", așa cum vezi aici unde se face distincția între teaser și rezumatul manual: "Rezumatul manual WordPress este adesea confundat cu rezumatul automat sau cu teaser-ul (partea unei postări care apare pe pagina principală când folosești eticheta More). Deși ambele sunt legate de rezumatul manual, ele sunt diferite de acesta."

Marcus Marcus
26 ian. 2013 02:04:08

Marcus, articolul pe care l-ai menționat indică faptul că teaser-ul este partea unui articol care apare pe pagina principală atunci când folosești tag-ul More. De aceea ți-am oferit un răspuns care se referă la teaser. Mult succes!

chowwy chowwy
26 ian. 2013 02:13:18

Îmi pare atât de rău. Lucrez încă de la 3:30 dimineața la această sarcină și am citit complet greșit codex-ul când am deschis ticketul. Mulțumesc mult pentru timpul acordat.

Marcus Marcus
26 ian. 2013 02:24:01

Nicio problemă. Sper să rezolvi totul.

chowwy chowwy
26 ian. 2013 14:55:08
Arată celelalte 7 comentarii
0
//.... get_the_content() .....//

Editează această parte astfel: get_the_content("")

Cu acest "" vei face conținutul gol. Astfel, vei avea doar textul conținutului fără linkul "read more" :-)

3 mai 2015 09:03:00
1
-2

A trebuit să intru în folderul wp-includes, în fișierul formatting.php și să editez linia 3284, schimbând numărul implicit de cuvinte de inclus în fragment la un număr foarte mare, astfel:

    $excerpt_length = apply_filters( 'excerpt_length', 550000000000000 );

Valoarea implicită este doar 55

9 nov. 2016 20:34:50
Comentarii

Ar trebui să evitați editarea fișierelor de bază precum formatting.php cât posibil, deoarece acestea vor continua să se schimbe la fiecare actualizare. În schimb, folosiți filtrul excerpt_length pentru a modifica valoarea.

Marcus Downing Marcus Downing
26 iul. 2017 15:53:56