php - working - Títulos de WordPress: si son más de 50 caracteres, muestran elipsis
wp_title without separator (8)
Tengo un sitio de wordpress con títulos, y si el título tiene más de 50 caracteres, necesito agregar puntos suspensivos (...) al final del título y detener el título a 50 caracteres. A continuación se muestra el PHP que estoy escribiendo pero parece que no funciona correctamente, buscando un gurú de PHP para que me enseñe la forma correcta de hacerlo. Cualquier ayuda sería muy apreciada.
<?php if (strlen("the_title()") > 50) { ?>
<?php the_title(); ?>
<?php } if (strlen("the_title()") < 50) { ?>
<?php echo substr(get_the_title(), 0, 50); ?>...
<?php } ?>
Agregue esto a su archivo "functions.php" en su carpeta de temas ....
function the_title_excerpt($before = '''', $after = '''', $echo = true, $length = false)
{
$title = get_the_title();
if ( $length && is_numeric($length) ) {
$title = substr( $title, 0, $length );
}
if ( strlen($title)> 0 ) {
$title = apply_filters(''the_title_excerpt'', $before . $title . $after, $before, $after);
if ( $echo )
echo $title;
else
return $title;
}
}
entonces llama al título como sigue
<?php the_title_excerpt('''', ''...'', true, ''50''); ?>
Código único, 100% de trabajo.
Función PHP mb_strimwidth () | Función Wordpress get_the_title ()
<?php
echo mb_strimwidth( get_the_title(), 0, 100, ''...'' );
?>
Estás comprobando la longitud de la cadena "the_title()"
. Elimine las comillas y probablemente funcionará (no estoy seguro al 100% de la diferencia entre the_title () y get_the_title (), ya que no he usado Wordpress en un tiempo, es posible que tenga que cambiar eso también) :
<?php if (strlen(the_title()) > 50) { ?>
<?php the_title(); ?>
<?php } if (strlen(the_title()) < 50) { ?>
<?php echo substr(get_the_title(), 0, 50); ?>...
<?php } ?>
o tal vez
<?php if (strlen(get_the_title()) > 50) { ?>
<?php the_title(); ?>
<?php } if (strlen(get_the_title()) < 50) { ?>
<?php echo substr(get_the_title(), 0, 50); ?>...
<?php } ?>
La función mb_strimwidth hace exactamente eso.
echo mb_strimwidth(get_the_title(), 0, 50, ''...'');
Saque the_title()
de las comillas cuando use la función strlen()
.
WordPress ha incorporado la función "wp_trim_words()"
para recortar las oraciones en función del número de palabras que proporcione,
https://codex.wordpress.org/Function_Reference/wp_trim_words
Para recortar el título de más de 5 palabras, puedes hacer esto.
<?php
$title = get_the_title();
$short_title = wp_trim_words( $title, 5, ''...'' );
echo ''<h3>''.$short_title.''</h3>'';
?>
echo (strlen(the_title())>50) ? (substr(the_title(), 0, 50) . "...") : the_title());
Este es un operador ternario. Lo que básicamente dice es que si el resultado de the_title()
tiene más de 50 caracteres, the_title()
eco en los primeros 50 caracteres y luego en la cadena ...
De lo contrario, simplemente the_title()
eco del resultado de the_title()
.
Puede leer más sobre substr
aquí: http://php.net/manual/en/function.substr.php
Puede encontrar información sobre el operador ternario aquí: http://php.net/manual/en/language.operators.comparison.php
<?php
$title = the_title('''','''',false);
if(strlen($title) > 60):
echo trim(substr($title, 0, 65)).''...'';
else:
echo $title;
endif;
?>