Hur man får fram den aktuella sidtiteln i WordPress
Ibland vill vi få fram den aktuella sidtiteln, som visas i <title>
-taggen. Här menar jag sidan i allmän mening, inte WordPress ”sida”. Vi har flera WordPress-funktioner som kan hjälpa till, till exempel:
-
get_the_title()
: för att få aktuell post/page/any post type title -
single_cat_title()
: för att få aktuell kategorititel. Det finns också syskonfunktioner för taggar och termer:single_tag_title()
ochsingle_term_title()
-
get_bloginfo()
: för att få fram bloggnamnet - etc.
Det är bra att använda dessa funktioner, men de har några nackdelar:
- De här funktionerna är specifika för vissa sidor som enskilda inlägg/sida, kategori/tag, … sidor. Men vi kan ha många sidtyper i WordPress som: Du kan använda ett tema som har titeln i formatet
Post Title | Blog Name
, men ett annat tema kan endast användaPost Title
. Du kan göra en kombination av funktionerna ovan för att uppnå rätt titel, men det kommer inte att användas i stor utsträckning för andra teman. - Och du kan ställa in titeln på olika sätt med SEO-plugins
I det här inlägget kommer jag att använda ett enkelt knep som kan lösa dessa problem snabbt.
Jag är säker på att vi alla känner till funktionen wp_title()
, vi använder ofta den här funktionen i header.php
-filen, så här:
<title><?php wp_title( '|', true, 'right' ); ?></title>
för att visa sidans titel (du bör endast använda den här funktionen för att visa sidans titel, annars kanske din webbplats inte är kompatibel med SEO-plugins eller orsakar prestandaproblem).
Tricket är att byta den andra parametern $echo
från true
till false
för att få värdet på den aktuella sidtiteln:
$title = wp_title( '|', false, 'right' );
Här är ett exempel där denna teknik är användbar. Vi ska visa en Twitter-knapp. Jag kommer att använda en annan cool teknik för att få fram den aktuella sidans URL:
global $wp;$link = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );$text = wp_title( '|', false );printf( '<iframe allowtransparency="true" frameborder="0" scrolling="no" src="https://platform.twitter.com/widgets/tweet_button.html?url=%s&text=%s&count=horizontal"></iframe>', urlencode( $link ), rawurlencode( $text ));
Jag använder för närvarande skriptet ovan (med några tillägg för Facebook like, Google+ knappar) för mina webbplatser. Och det fungerar utmärkt på arkivsidor där inbyggda WordPress-funktioner inte är särskilt hjälpsamma.