Vill du lära dig hur man förkortar titlar på post med PHP?
Trunkering, eller förkortning, låter dig kontrollera längden på titlarna på dina blogginlägg på hela din website. Beroende på ditt WordPress-tema kanske du vill visa kortare titlar än vad ditt theme har support för.
I den här artikeln kommer vi att visa you hur man trunkerar titlar på post i WordPress.
Varför avkorta rubriker i WordPress med PHP?
Att trunkera rubriker i WordPress med PHP ger dig mer control över längden på dina posters rubriker och hur de visas på din website.
Till exempel kanske du vill klippa bort långa rubriker på din homepage så att de inte stör designen på din WordPress blogg.
Note: Vissa användare vill helt enkelt använda kortare inläggstitlar för att optimera blogginlägg för sökmotorsoptimering. I det här fallet behöver du inte förkorta titlarna på posterna. Istället kan du helt enkelt använda ett WordPress sökmotorsoptimering plugin för att göra din title tag kortare.
Ett sökmotorsoptimeringsplugin låter dig skapa custom SEO-titlar för sökresultatsidorna medan du fortfarande behåller längre posttitlar för dina besökare på din site.
För mer detaljer, se vår ultimata guide om hur du ställer in All in One SEO korrekt.
Med det sagt, låt oss visa dig hur du kan förkorta WordPress rubriker på din website genom att använda två olika metoder:
Metod 1: Avkorta WordPress publicerade rubriker med en WordPress-funktion
Det enklaste sättet att trunkera rubriker på WordPress-poster i WordPress är genom att lägga till PHP-kod i dina WordPress-filer. Om du inte har gjort det tidigare kan du kontrollera vår guide om hur man copy and paste kod i WordPress.
Många tutorials kommer att säga till you att add code directly to your theme’s functions.php file. Eventuella error kan dock orsaka en rad olika WordPress-fel eller till och med förstöra din webbplats.
Det är därför vi rekommenderar att du använder det gratis pluginet WPCode istället, följ vår guide om hur du lägger till custom code i WordPress.
Först måste du installera och aktivera det gratis pluginet WPCode. Om du behöver hjälp med detta, vänligen se vår Step-by-Step guide om hur du installerar ett WordPress plugin.
När du är aktiverad väljer du Code Snippets ” + Add Snippet från din admin sidebar. Därefter hoverar du musen över alternativet ”Add Your Custom Code (New Snippet)” och klickar sedan på knappen ”Use snippet” som visas.
Detta kommer att öppna en new page där du kan skriva en titel för snippet och sedan lägga till koden.
Det är bara att copy and paste in följande kod i rutan Code Preview i WPCode.
function max_title_length( $title ) {
$max = 35;
if( strlen( $title ) > $max ) {
return substr( $title, 0, $max ). " …";
} else {
return $title;
}
}
add_filter( 'the_title', 'max_title_length');
Denna kod kommer att köras inuti din WordPress-postloop och förkorta titlarna på dina blogginlägg till ’35’ tecken. För att ändra längden på din titel, ställ bara in $max-variabeln
till din önskade titellängd.
Därefter måste du välja ”PHP Snippet” från rullgardinsmenyn Code Type.
Slutligen måste du toggle Activate-inställningen på och sedan spara snippet genom att klicka på knappen ”Save Snippet”.
Nu när code snippet är aktivt kommer titlarna på dina blogginlägg att förkortas var de än dyker upp på din WordPress website.
Metod 2: Trunkera WordPress Post Titles med PHP genom att ändra WordPress Theme Files
Ett annat sätt att förkorta rubriker på WordPress-poster är genom att lägga till kod direkt i filerna för ditt WordPress-tema.
Den här metoden ger dig mer control över var dina titlar förkortas. Till exempel kanske du vill förkorta titlar endast på din homepage men visa titeln i full längd på blogginlägget.
För att göra det måste du add to PHP-koden direkt till WordPress temafiler där du vill förkorta titlarna på dina blogginlägg.
Du kan till exempel add to code snippet under till din index.php-fil
för att ersätta den befintliga the_title
taggen i din WordPress post loop för att ändra titellängden på hela webbplatsen:
<a href="<?php the_permalink() ?>">
<?php
$thetitle = $post->post_title; /* or you can use get_the_title() */
$getlength = strlen($thetitle);
$thelength = 25;
echo substr($thetitle, 0, $thelength);
if ($getlength > $thelength) echo "...";
?>
</a>
Den här koden ställer in längden på titeln på posten till 25 tecken. Om titeln är längre än 25 tecken kommer den att klippa av titeln efter 25 tecken och add to en ellips ’…’ i slutet.
Om du vill ändra teckenlängden för din website ändrar du bara variabeln $thelength
till önskat antal tecken.
När du har addat koden och saved din fil måste du uploada den till din theme directory på ditt WordPress webbhotell account.
Du kan göra detta genom att använda en FTP-klient eller filhanteringsverktyget i din kontrollpanel på webbhotellet WordPress. Om du inte har använt FTP tidigare kan du kontrollera vår guide om hur du använder FTP för att uploada filer till WordPress.
När koden har addats kommer titlarna på dina post att förkortas till det teckenantal du har angett.
Pro Tips: Om du använde metod 2 kommer du att förlora dessa ändringar när du uppdaterar ditt theme till en new version. För att undvika detta, se vår guide om hur du uppdaterar ditt WordPress theme utan att förlora customize.
Vi hoppas att den här artikeln hjälpte dig att lära dig hur du avkortar WordPress-posters rubriker med PHP. Du kanske också vill se vår guide om hur man skriver ett bra blogginlägg och våra expertval av de bästa schema markup-tilläggen för WordPress.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Achintha
Hey There is a wordpress function for limit words. Better to use that.
http://codex.wordpress.org/Function_Reference/wp_trim_words
dustinporchia
This is golden!….Thanks wpbeginner!
adm_mnz
If you use mb_substr there is a parameter for encoding.
http://php.net/manual/en/function.mb-substr.php
Junaid
Sweet! was just looking for a clients project
Marco
Does anybody know how the link title of previous_post_link(); could be truncated?
thanks
Brow
Thanks this worked perfectly! I didn’t want to end up using a plugin just to do this and was happy your code cut down the titles properly.
Thanks again!
Joey Figaro
Hey there – thanks for writing this up! I happened to stumble upon another example of how to achieve this and it seemed a lot more simple, so I will share it with you and see what you think.
functions.php:
function new_excerpt_length($length) {
return 100;
}
add_filter(’excerpt_length’, ’new_excerpt_length’);
Editorial Staff
These are two entirely different concepts…. The one you recommend is for post excerpts whereas the one we are talking about is for Post Titles.
Administratör
Joey Figaro
Wow, that’s embarrassing.
Lena
Hi!
This doesn’t work if you use other languages than english. My swedish titel looks awful because the code doesn’t translate å ä and ö comparing to the default code. Any suggestions of what I have to do? This is a good trick and i want to use it.
Kindly Lillan
Editorial Staff
Hmm… that does sound like a serious issue. Wondering if you can specify the language via PHP, so it counts characters in that instead of english.
Administratör
Alex
You might wanna try to specify a different charset, check Latin1 or utf8 i think they contain those chars as well.. I had some similar issues recently since my first language is german
Editorial Staff
Thank you for helping out Alex
Ben Kulbertis
Thanks for the Trackback!
Editorial Staff
We appreciate your work for the community. Thanks for the nice snippet
Administratör
Navjot Singh
One Suggestion, this type of code should be included in functions.php and not index.php. You can use conditional tags to restrict the code to any page you want whether its the homepage or any other page where you want.
Editorial Staff
This is just for specific areas… But yes, it can be customized and placed in functions.php
Administratör
Thomas Scholz
Don’t use strlen(). Use mb_strlen() or strlen(utf8_decode($str)) or you risk to truncate the string inside of a multi-byte character. The same applies to mb_substr().
Oh, and an ellipsis is one character: …
snipsley
Thanks!! mb_strlen() a mb_substr solved my encoding problem. I’ve been looking for this for hours!
Lena Backstedt
BIG tnx!
mb_strlen() also seems to work for the swedish language (so far I can see)