Più lunghezze dell’estratto in wordpress

Come si dice nel titolo, sto cercando più lunghezze di estratti in WordPress.

Capisco che puoi farlo in functions.php:

function twentyten_excerpt_length( $length ) { return 15; } add_filter( 'excerpt_length', 'twentyten_excerpt_length' ); 

Quello che voglio sapere è come è ansible avere più di questi valori restituendo valori numerici diversi in modo da ottenere brevi estratti per i loop della barra laterale, estratti più lunghi per i loop in primo piano e l’estratto più lungo per l’articolo principale.

Qualcosa come l’utilizzo di questi nei modelli:

    

Saluti, Dave

Che ne dite di…

 function excerpt($limit) { $excerpt = explode(' ', get_the_excerpt(), $limit); if (count($excerpt) >= $limit) { array_pop($excerpt); $excerpt = implode(" ", $excerpt) . '...'; } else { $excerpt = implode(" ", $excerpt); } $excerpt = preg_replace('`\[[^\]]*\]`', '', $excerpt); return $excerpt; } function content($limit) { $content = explode(' ', get_the_content(), $limit); if (count($content) >= $limit) { array_pop($content); $content = implode(" ", $content) . '...'; } else { $content = implode(" ", $content); } $content = preg_replace('/\[.+\]/','', $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); return $content; } 

quindi nel tuo codice modello ti basta usare ..

  

da: http://bavotasan.com/tutorials/limiting-the-number-of-words-in-your-excerpt-or-content-in-wordpress/

Per ora, puoi aggiornare la risposta di Marty:

 function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit); } 

Puoi anche definire un link personalizzato “leggi di più” in questo modo:

 function custom_read_more() { return '... more »'; } function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit, custom_read_more()); } 

Questo è quello che mi è venuto in mente.

Aggiungi questo al tuo functions.php

 class Excerpt { // Default length (by WordPress) public static $length = 55; // So you can call: my_excerpt('short'); public static $types = array( 'short' => 25, 'regular' => 55, 'long' => 100 ); /** * Sets the length for the excerpt, * then it adds the WP filter * And automatically calls the_excerpt(); * * @param string $new_length * @return void * @author Baylor Rae' */ public static function length($new_length = 55) { Excerpt::$length = $new_length; add_filter('excerpt_length', 'Excerpt::new_length'); Excerpt::output(); } // Tells WP the new length public static function new_length() { if( isset(Excerpt::$types[Excerpt::$length]) ) return Excerpt::$types[Excerpt::$length]; else return Excerpt::$length; } // Echoes out the excerpt public static function output() { the_excerpt(); } } // An alias to the class function my_excerpt($length = 55) { Excerpt::length($length); } 

Può essere usato in questo modo.

 my_excerpt('short'); // calls the defined short excerpt length my_excerpt(40); // 40 chars 

Questo è il modo più semplice che conosco per aggiungere filtri, richiamabili da una funzione.

Stavo cercando anche questa funzione e la maggior parte delle funzioni qui sono buone e flessibili. Per il mio caso stavo cercando una soluzione che mostra una lunghezza di un estratto diverso solo su pagine specifiche. Sto usando questo:

 function custom_excerpt_length( $length ) { return (is_front_page()) ? 15 : 25; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 ); 

Incolla questo codice all’interno del file functions.php di temi.

Tornando alla risposta di Marty:

So che è passato più di un anno da quando questa risposta è stata pubblicata, ma è meglio tardi che mai. Per fare in modo che funzioni con limiti di oltre il valore predefinito di WordPress di 55, è necessario sostituire questa riga:

  $excerpt = explode(' ', get_the_excerpt(), $limit); 

con questa linea:

  $excerpt = explode(' ', get_the_content(), $limit); 

Altrimenti, la funzione funziona solo con una parte di testo già tagliata.

Puoi aggiungere al tuo file functions.php questa funzione

 function custom_length_excerpt($word_count_limit) { $content = wp_strip_all_tags(get_the_content() , true ); echo wp_trim_words($content, $word_count_limit); } 

Quindi chiamalo nel tuo modello come questo

 

wp_strip_all_tags dovrebbe impedire ai tag html di rompere di rompere la pagina.


Documentazione sulle funzioni

  • get_the_content
  • wp_trim_words
  • wp_strip_all_tags

Penso che ora possiamo usare wp_trim_words vedere qui . Non sei sicuro di quali siano i dati extra di escaping e sanitizzazione necessari per utilizzare questa funzione, ma sembra interessante.

Qui un modo semplice per limitare il contenuto o l’estratto

 $content = get_the_excerpt(); $content = strip_tags($content); echo substr($content, 0, 255); 

cambia get_the_excerpt () di get_the_content () se vuoi i contenuti.

Saluti

Fai attenzione ad alcuni di questi metodi. Non tutti eliminano i tag html, il che significa che se qualcuno inserisce un collegamento a un video (o url) nella prima frase del loro post, il video (o il collegamento) verrà visualizzato nell’estratto, probabilmente facendo esplodere la pagina.

Ho trovato un ottimo plugin che può fare questo – Limite di parole di Contenuto ed Estratto

Usa estratto avanzato
http://wordpress.org/extend/plugins/advanced-excerpt/ plugin. Anch’io ho trovato una risposta da questa pagina.

Io cosa è ansible creare un codice breve, non l’ho provato ma ho scritto per te l’idea principale della sua struttura

 function twentyten_excerpt_length($atts,$length=null){ shortcode_atts(array('exlength'=>'short'),$atts); if(!isset($atts['exlength']) || $atts['exlength'] == 'short') { return 15; }elseif( $atts['exlength'] == 'medium' ){ return 30; // or any value you like }elseif( $atts['exlength'] == 'long' ){ return 45; // or any value you like }else{ // return nothing } } add_shortcode('the_excerpt_sc','twentyten_excerpt_length'); 

quindi puoi usarlo in questo modo

 [the_excerpt_sc exlength="medium"] 

So che questo è un thread molto vecchio, ma ho solo faticato con questo problema e nessuna delle soluzioni che ho trovato online ha funzionato correttamente per me. Per prima cosa il mio filtro “excerpt_more” è sempre stato interrotto.

Il modo in cui l’ho risolto è brutto da morire, ma è l’unica soluzione funzionante che ho trovato. La bruttezza comporta la modifica di 4 linee di WP core (!!) + l’uso di un’altra variabile globale (anche se WP lo fa già così tanto che non mi sento troppo male).

Ho cambiato wp_trim_excerpt in wp-includes / formatting.php in questo modo:

  0 ? $excerpt_length : 55; $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]>', $text); $excerpt_length = apply_filters('excerpt_length', $len); $excerpt_more = apply_filters('excerpt_more', ' ' . '[…]'); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } $excerpt_length = null; return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); } 

L’unica novità è $excerpt_length e $len bit.

Ora se voglio cambiare la lunghezza predefinita lo faccio nel mio modello:

  

Cambiare core è una soluzione orribile, quindi mi piacerebbe sapere se qualcuno si presenta con qualcosa di meglio.

Vorrei fare così:

 function _get_excerpt($limit = 100) { return has_excerpt() ? get_the_excerpt() : wp_trim_words(strip_shortcodes(get_the_content()),$limit); } 

Uso:

 echo _get_excerpt(30); // Inside the loop / query 

Perché ?

  • Se has_excerpt deve restituire estratto
  • Non lo è, quindi the_content parole / the_content shortcode da the_content

Ecco un articolo sull’utilizzo della lunghezza dell’estratto personalizzato in WordPres. C’è un numero di modi per limitare e controllare la lunghezza dell’estratto della posta.

  1. Limita la lunghezza dell’estratto post o la lunghezza del contenuto dell’inserzione utilizzando il numero di parole.
  2. Limitazione della lunghezza dell’estratto a un numero di caratteri.
  3. Limita il riepilogo del post aggiungendo il tag “leggi altro”.
  4. Abilitazione di estratto personalizzato per scrivere il tuo riepilogo per ogni post.
  5. Controlla la lunghezza dell’estratto utilizzando i filtri

http://smallenvelop.com/limit-post-excerpt-length-in-wordpress/ Spero che questo ti aiuterà molto.