functions funciones developer codex php wordpress function

php - developer - wordpress funciones



MĂșltiples longitudes de extracto en wordpress (15)

Aquí una manera fácil de limitar el contenido o el extracto

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

cambie get_the_excerpt () por get_the_content () si quiere los contenidos.

Saludos

Como dice el título, estoy buscando longitudes de fragmentos múltiples en WordPress.

Entiendo que puedes hacer esto en functions.php:

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

Lo que quiero saber es cómo puede tener varios de estos valores numéricos cada uno que regresan, así puedo obtener extractos breves para los bucles de la barra lateral, extractos más largos para los bucles mostrados y el fragmento más largo para el artículo principal.

Algo así como usar estos en las plantillas:

<?php the_excerpt(''length-short'') ?> <?php the_excerpt(''length-medium'') ?> <?php the_excerpt(''length-long'') ?>

Saludos, Dave



Creo que es posible crear un código corto, no lo intenté pero le escribí la idea principal sobre su estructura

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

para que pueda usarlo como tal

[the_excerpt_sc exlength="medium"]



Estaba buscando esta característica también y la mayoría de las funciones aquí son buenas y flexibles. En mi caso, estaba buscando una solución que muestre una longitud de fragmento diferente solo en páginas específicas. Estoy usando esto:

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

Pegue este código dentro del archivo themes functions.php.


Esto es lo que se me ocurrió.

Agregue esto a sus 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); }

Se puede usar así.

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

Esta es la manera más fácil que conozco para agregar filtros, que se pueden llamar desde una función.


Me gustaría hacer esto:

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

Por qué ?

  • Si has_excerpt debe devolver el fragmento dado
  • No, así que recortar palabras / the_content códigos cortos de the_content

Por ahora, puedes actualizar la respuesta de Marty:

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

También puede definir el enlace personalizado ''leer más'' de esta manera:

function custom_read_more() { return ''... <a class="read-more" href="''.get_permalink(get_the_ID()).''">more&nbsp;&raquo;</a>''; } function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit, custom_read_more()); }


Puede agregar a su archivo functions.php esta función

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

Luego llámalo en tu plantilla como este

<p><?php custom_length_excerpt(50); ?>

El wp_strip_all_tags debería evitar que las etiquetas html perdidas rompan la página.

Documentación sobre funciones


Qué tal si...

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('']]>'', '']]&gt;'', $content); return $content; }

luego en tu código de plantilla solo usas ...

<?php echo excerpt(25); ?>

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


Sé que este es un hilo muy viejo, pero luché con este problema y ninguna de las soluciones que encontré en línea funcionó correctamente para mí. Por un lado, mi propio filtro "excerpt_more" siempre se cortaba.

La forma en que lo resolví es fea como el infierno, pero es la única solución de trabajo que pude encontrar. La fealdad implica modificar 4 líneas de WP core (!!) + el uso de otra variable global (aunque WP ya lo hace tanto que no me siento tan mal).

Cambié wp_trim_excerpt en wp-includes / formatting.php a esto:

<?php function wp_trim_excerpt($text = '''') { global $excerpt_length; $len = $excerpt_length > 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('']]>'', '']]&gt;'', $text); $excerpt_length = apply_filters(''excerpt_length'', $len); $excerpt_more = apply_filters(''excerpt_more'', '' '' . ''[&hellip;]''); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } $excerpt_length = null; return apply_filters(''wp_trim_excerpt'', $text, $raw_excerpt); }

Lo único nuevo es el $excerpt_length y $len bits.

Ahora, si quiero cambiar la longitud predeterminada, hago esto en mi plantilla:

<?php $excerpt_length = 10; the_excerpt() ?>

Cambiar el núcleo es una solución horrible, así que me encantaría saber si a alguien se le ocurre algo mejor.


Tenga cuidado al usar algunos de estos métodos. No todos ellos quitan las etiquetas html, es decir, si alguien inserta un enlace a un video (o url) en la primera frase de su publicación, el video (o enlace) aparecerá en el extracto, posiblemente haciendo estallar su página.



Volviendo a la respuesta de Marty:

Sé que ha pasado más de un año desde que se publicó esta respuesta, pero es mejor tarde que nunca. Para que esto funcione con límites superiores al predeterminado de WordPress de 55, debe reemplazar esta línea:

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

con esta linea:

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

De lo contrario, la función solo funciona con un fragmento de texto ya recortado.


Here hay un artículo sobre el uso de longitud de extracto personalizado en WordPres. Hay una serie de formas de limitar y controlar la longitud del extracto de publicación.

  1. Limite la longitud del extracto del post o la longitud del contenido del post usando el número de palabras.
  2. Limitar la longitud del extracto a una cantidad de caracteres.
  3. Limite el resumen del mensaje agregando la etiqueta "leer más".
  4. Permitir extractos personalizados para escribir su propio resumen para cada publicación.
  5. Controle la longitud del extracto usando filtros

Here Espero que esto te ayude mucho.