• User Attivo

    Funzione the_excerpt come fare a duplicarla

    Ciao a tutti , sto creando un sito che si divide nella home page nell'articolo principale e scendendo piu' in basso la catalogazione di altri articoli , soltanto che avrei un problema sia l'articolo in prima pagina che la catalogazione utilizzano la funzione the_excerpt e vorrei impostare il numero di parole tra le due cose cioe' vorrei mettere all'articolo che si trova in alto 100 parole , mentre a quello piu' basso vorrei metterne 50 allora dovrei sdoppiare la funzione the_excerpt ?

    Grazie e cordiali saluti


  • ModSenior

    Non mi intendo molto di wordpress...
    Ma ipotizzo che quella funzione ritorni una stringa o sbaglio?
    Se si potresti fare/usare una tua funzione myExcepert che richiami quella nativa e poi la tronchi a 50?


  • User Attivo

    Ciao marco , come stai ? tutto bene ? ho provato ma dovrei trovare la funzione di wordpress come si comporta non credi oppure posso farne una io ? direttamente ?

    Grazie


  • User Attivo

    La funzione the_excerpt ha origine in wp-includes/post-template.php
    ma non potresti usare la funzione the_content() con il tag more?


  • User Attivo

    Ciao elmanisero , grazie per la tua risposta quindi mi conviene usare ad un parte la funzione the content con il tag more ma poi la cosa che da fastidio usando questa funzione fa uscire tutto il testo e non solo un riassunto. Sbaglio ?


  • User Attivo

    Fa visualizzare il testo del post fino a dove metti il tag more, questo l'ho letto nella pagina di wordpress relativa a the_excerpt codex.wordpress.org/Function_Reference/the_excerpt dove si citava appunto a the_content() mettendoli a confronto e mi sembrava che poteva esserti più utile questa funzione.


  • User Attivo

    Ciao, potresti utilizzare questo plugin:

    wordpress.org/extend/plugins/advanced-excerpt/

    Nella pagina FAQ spiega che puoi sostituire la funzione the_exerpt di WordPress con quella del plugin per poi passare uno o più paramentri e tra essi c'è quello per indicare la lunghezza.

    Gennaro.


  • User Attivo

    L'articolo principale e gli altri secondari sono contenuti tutti in un unico loop?


  • User

    ciao, potresti gestire gli articoli visualizzati con un foreach, in questo modo:

    $articoli = get_posts('numberposts=1');
    foreach($articoli as $post) {
    $content= $post->post_content ;
    echo $content;
    }
    

    in questo modo visualizzi il testo di un articolo, quello che sarà il tuo articolo in alto. Adesso devi tagliare il post visualizzando solo 100 caratteri, in questo modo:

    $articoli = get_posts('numberposts=1');
    foreach($articoli as $post) {
    $content= $post->post_content ;
    
    $content_tagliato= substr($content,0, 100);
    $last_space=strrpos($content_tagliato," ");
    $content_ok=substr($content_tagliato, 0,$last_space);
    
    echo $content_ok;
    }
    

    con "content_tagliato" tronchi il testo a 100 caratteri, però potrebbe capitare che ti taglia le parole tipo al posto di stampare "sono tornato a casa" ti fa vedere "sono tornat"... per eliminare questa possibilità facciamo in modo di evidenziare l'ultimo spazio presente nel testo composto dai 100 caratteri ("content_tagliato") con "last_space" e togliamo tutto quello che c'è dopo con "content_ok"; quindi tu visualizzerai "sono tornato" invece del precedente "sono tornat".

    Ovviamente l'articolo ha un titolo, permalink, etc... per avere questi dati consulta questa pagina:

    codex.wordpress.t]org/Function_Reference/get_post

    dove trovi funzioni da aggiungere all'interno del foreach.

    Per gli articoli da 50 caratteri ripeti l'operazioni cambiando il get_posts e questo:

    $content_tagliato= substr($content,0, 100);
    
    ```in
    

    $content_tagliato= substr($content,0, 50);

    
    dovrebbe andare... in caso fammi sapere :gthi:

  • User Attivo

    Grazie appena posso provo e ti faccio sapere.
    Ciao


  • User Attivo

    Io utilizzerei le funzioni che mette a disposizione wordpress..
    Visto che tu vuoi cambiare la lunghezza degli excerpt di tutti gli articoli tranne il primo, per il primo post utilizza la funzione php
    [php]substr($content,0,$lunghezza) [/php] mentre cambi la lunghezza predefinita dell'Excerpt tramite i filtri, inserendo questo codice nel file functions.php (tratto da http://codex.wordpress.org/Function_Reference/the_excerpt).

    [php]
    function new_excerpt_length($length) { return 50; } add_filter('excerpt_length', 'new_excerpt_length');
    [/php]
    Il codice postato limita la lunghezza a 50 parole e non a 50 caratteri come fanno invece le soluzioni esposte sopra. Una parola è composta solitamente da più di un carattere per cui dovresti utilizzare una funzione più complessa per ottenere 50 parole.