Rimuovi il link "Continua a leggere" solo dall'anteprima teaser

25 gen 2013, 23:11:37
Visualizzazioni: 18K
Voti: 6

Voglio rimuovere il link "Continua a leggere" solo dall'anteprima teaser e non dall'excerpt automatico, per il quale il filtro è già disponibile.

Questo è il codice originale; proviene dal Template Page Template Showcase:

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

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

<?php endwhile; ?>

Ecco l'Intro:

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

-->

1
Commenti

Dobbiamo vedere tutto il tuo codice, potresti pubblicare il contenuto di content-intro.php? Potresti voler verificare cosa fa get_template_part =p

Tom J Nowell Tom J Nowell
26 gen 2013 01:07:07
Tutte le risposte alla domanda 5
1

Modificare il testo standard per tutti gli estratti:

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');

Creare la propria funzione per gli estratti:

// Funzione per estratti di Rafael Marques ;)
function rm_excerpt($limit = null, $separator = null) {

    // Imposta il limite standard di parole
    if (is_null($limit)){
        $excerpt = explode(' ', get_the_excerpt(), '15');
    } else {
        $excerpt = explode(' ', get_the_excerpt(), $limit);
    }

    // Imposta il separatore standard
    if (is_null($separator)){
        $separator = '...';
    }

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

Utilizzare <?php rm_excerpt(); ?> quando si desidera visualizzare un estratto personalizzato. Il primo valore imposta il limite di parole e il secondo il separatore. Esempio: <?php rm_excerpt(10,' (...)'); ?>. Per creare un link separato "leggi tutto", inserire <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">Leggi tutto?</a>

25 gen 2013 23:50:31
Commenti

Va bene, quindi non esiste un filtro specifico che modifica solo il teaser?

Marcus Marcus
26 gen 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>';
}

Aggiungi questo al tuo file functions.php e rimuoverà il link "continua a leggere".

http://codex.wordpress.org/Customizing_the_Read_More

30 giu 2014 07:21:26
12

Sembra che tu voglia rimuovere il teaser "Continua a leggere" da the_content(). Se è così, questo esempio dal Codex è ciò che ti serve:

Tecniche per il Read More

I parametri all'interno del template tag the_content() sono i seguenti:

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

Il parametro $more_link_text imposta il testo del link come "Leggi di più". Il secondo parametro, $strip_teaser, determina se il link "more" deve essere nascosto (TRUE) o visualizzato (FALSE). Il valore predefinito è FALSE, che mostra il testo del link.

Per rimuovere il teaser:

Modifica the_content(); nel tuo index.php in questo modo (il secondo parametro controlla questo comportamento):

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

Includi <!--noteaser--> nel testo del post, immediatamente dopo il tag <!--more-->.

AGGIORNAMENTO
In base al tuo codice, sembra che tu abbia inserito il codice nel posto sbagliato. Senza vedere i tuoi file, probabilmente devi andare in content.php e cercare the_content() per apportare la modifica lì. Ho verificato su uno dei miei temi che utilizza i template e funziona correttamente. Dovresti anche approfondire il funzionamento dei template per comprenderne meglio il meccanismo. In breve:

1 - Rimuovi questo testo dal tuo codice: if ( '' != get_the_content('',TRUE,'') )
2 - Vai su content.php nel tuo tema e trova the_content() e cambialo in the_content('',TRUE,'')
3 - Aggiungi <!--noteaser--> come indicato sopra

Questo vale se stai usando <!--more--> per impostare manualmente gli estratti.

26 gen 2013 00:00:09
Commenti

Ciao chowwy -- L'ho visto e ho pensato che rimuovesse completamente l'anteprima invece di rimuovere solo il link Continua a leggere. Non è corretto?

Marcus Marcus
26 gen 2013 00:04:27

Sembra che $strip_teaser indichi se il link "more" debba essere nascosto/mostrato. Non indica che l'estratto stesso venga rimosso.

chowwy chowwy
26 gen 2013 00:05:46

chowwy -- non funziona. Nota che dice di mettere il tag <!--noteaser--> dopo il tag more, il che non si applica agli estratti teaser perché non hanno tag more. Ha senso? Ho provato a inserire <!--noteaser--> nell'editor comunque e non ho ottenuto nulla.

Marcus Marcus
26 gen 2013 00:17:59

Marcus, hai del codice che possiamo vedere? È nel loop come the_content() o stai usando the_excerpt() da qualche altra parte?

chowwy chowwy
26 gen 2013 00:21:03

L'ho appena inserito nella domanda

Marcus Marcus
26 gen 2013 00:30:29

Marcus, ho aggiornato la mia risposta.

chowwy chowwy
26 gen 2013 01:24:27

Per essere chiari, come puoi inserire <!--noteaser--> nel campo dell'estratto manuale dopo il tag <!--more--> quando il campo dell'estratto manuale non utilizza il tag <!--more--> per impostazione predefinita? Non credo che stiamo parlando della stessa cosa.

Marcus Marcus
26 gen 2013 01:45:56

Quando parlo di estratto manuale, intendo che stai decidendo dove tagliare il testo all'interno dell'editor del post, non utilizzando il campo separato per l'estratto. Se stai utilizzando il campo dell'estratto, questa domanda/risposta potrebbe essere utile - http://wordpress.stackexchange.com/questions/26837/how-to-remove-read-on-content-in-the-excerpt

chowwy chowwy
26 gen 2013 01:53:26

Questo è il motivo per cui ho usato la parola "teaser", perché a volte WP confonde l'"estratto manuale" con l'"estratto teaser", come puoi vedere link dove distingue tra il teaser e l'estratto manuale: "L'estratto manuale di WordPress viene spesso confuso con l'estratto automatico o con il teaser (la parte di un post che appare nella pagina iniziale quando usi il tag More). Sebbene entrambi siano correlati all'estratto manuale, sono diversi da esso."

Marcus Marcus
26 gen 2013 02:04:08

Marcus, l'articolo che hai linkato indica che il teaser è la parte di un post che appare nella pagina principale quando usi il tag More. Ecco perché ti ho fornito una risposta che riguarda il teaser. Buona fortuna.

chowwy chowwy
26 gen 2013 02:13:18

Mi dispiace tanto. Sono in piedi dalle 3:30 per questo lavoro e ho completamente frainteso il codex quando ho aperto il ticket. Grazie mille per il tuo tempo.

Marcus Marcus
26 gen 2013 02:24:01

Nessun problema. Spero che riesci a risolvere tutto.

chowwy chowwy
26 gen 2013 14:55:08
Mostra i restanti 7 commenti
0
//.... get_the_content() .....//

Modifica semplicemente questa parte così: get_the_content("")

Con questo "" renderai il contenuto vuoto. In questo modo avrai solo il testo del contenuto senza il link "leggi tutto" :-)

3 mag 2015 09:03:00
1
-2

Ho dovuto entrare nella cartella wp-includes, nel file formatting.php e modificare la riga 3284, cambiando il numero predefinito di parole da includere nell'estratto con un numero enorme in questo modo:

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

Il valore predefinito è solo di 55

9 nov 2016 20:34:50
Commenti

Dovresti evitare di modificare i file core come formatting.php se possibile, perché continueranno a cambiare quando effettui gli aggiornamenti. Invece, utilizza il filtro excerpt_length per modificare il valore.

Marcus Downing Marcus Downing
26 lug 2017 15:53:56