Troncamento dei campi personalizzati
1 risposta
- voti
Consulta la discussioneper Tassonomiabreve descrizione per unmodomiglioreper accorciare una stringa. Non sono a conoscenza di unafunzione WP che sta ottenendoiltroncamento corretto.
Eccoilmio codicebasato sulla discussione collegata:
/** * Accorcia una stringa con codifica UTF-8 senzainterrompere leparole. * * @param string $ string stringa da accorciare * @paramint $max_chars lunghezzamassimain caratteri * @param string $ append sostituzioneperparoletroncate. * @return stringa */ funzione utf8_truncate ($ string,$max_chars=200,$ append="\ xC2 \ xA0…") { $ stringa=strip_tags ($ stringa); $ string=html_entity_decode ($ string,ENT_QUOTES,'utf-8'); //\ xC2 \ xA0 è lo spaziono-break $ stringa=trim ($ stringa,"\n \ r \t .-; -,- \ xC2 \ xA0"); $ lunghezza=strlen (utf8_decode ($ stringa)); //Niente dafare. if ($ length & lt; $max_chars) { restituire $ stringa; } //mb_substr () èin/wp-includes/compat.php come riserva se //latua attualeinstallazione di PHPnon ce l'ha. $ stringa=mb_substr ($ stringa,0,$max_chars,'utf-8'); //Nessuno spaziobianco. Unaparola lunga otesto cinese/coreano/giapponese. if (FALSO===strpos ($ stringa,'')) { restituire $ stringa. $ append; } //Evita leinterruzioni all'interno delleparole. Trova l'ultimo spaziobianco. if (extension_loaded ('mbstring')) { $pos=mb_strrpos ($ stringa,'','utf-8'); $ short=mb_substr ($ stringa,0,$pos,'utf-8'); } altro { //Soluzione. Puòessere lento su stringhe lunghe. $parole=esplode ('',$ stringa); //Lascia l'ultimaparola. array_pop ($parole); $ short=implode ('',$parole); } return $ short. $ append; }
<"Test"
print utf8_truncate ('ööööö ööööö',10);
//stampa "ööööö…"
Aggiungi lafunzione altuo functions.php
e cambiailtuo codicein:
echo "& lt;p >" . utf8_truncate ($ desc). "& lt;/p >";
Puoi anche usarloper abbreviare untitolo:
echo "& lt; h1 >" . utf8_truncate (get_the_title ()). "& lt;/h1 >";
See the discussion for Taxonomy Short Description for a better way to shorten a string. I’m not aware of a WP function that is getting truncation right.
Here is my code based on the linked discussion:
/**
* Shortens an UTF-8 encoded string without breaking words.
*
* @param string $string string to shorten
* @param int $max_chars maximal length in characters
* @param string $append replacement for truncated words.
* @return string
*/
function utf8_truncate( $string, $max_chars = 200, $append = "\xC2\xA0…" )
{
$string = strip_tags( $string );
$string = html_entity_decode( $string, ENT_QUOTES, 'utf-8' );
// \xC2\xA0 is the no-break space
$string = trim( $string, "\n\r\t .-;–,—\xC2\xA0" );
$length = strlen( utf8_decode( $string ) );
// Nothing to do.
if ( $length < $max_chars )
{
return $string;
}
// mb_substr() is in /wp-includes/compat.php as a fallback if
// your the current PHP installation doesn’t have it.
$string = mb_substr( $string, 0, $max_chars, 'utf-8' );
// No white space. One long word or chinese/korean/japanese text.
if ( FALSE === strpos( $string, ' ' ) )
{
return $string . $append;
}
// Avoid breaks within words. Find the last white space.
if ( extension_loaded( 'mbstring' ) )
{
$pos = mb_strrpos( $string, ' ', 'utf-8' );
$short = mb_substr( $string, 0, $pos, 'utf-8' );
}
else
{
// Workaround. May be slow on long strings.
$words = explode( ' ', $string );
// Drop the last word.
array_pop( $words );
$short = implode( ' ', $words );
}
return $short . $append;
}
Test
print utf8_truncate( 'ööööö ööööö' , 10 );
// prints 'ööööö …'
Add the function to your functions.php
and change your code to:
echo '<p>' . utf8_truncate( $desc ) . '</p>';
You can also use it shorten a title:
echo '<h1>' . utf8_truncate( get_the_title() ) . '</h1>';
Sto utilizzando campipersonalizzatiperestrarre una descrizione secondaria.Vorrei utilizzareiltroncato di WordPressintegratomanon riesco a capirlo.
Qualsiasi aiuto sarebbe apprezzato.