Cum să elimini linkul "Continue Reading" doar din excerpt-ul teaser
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 -->
-->

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>

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".

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.

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?

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

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, ai ceva cod pe care îl putem vedea? Este în buclă ca the_content() sau folosești the_excerpt() în altă parte?

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.

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

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, 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!

Î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.

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
