Jak uzyskać bieżący tytuł strony w WordPress
Czasami chcemy uzyskać bieżący tytuł strony, która jest wyświetlana w <title>
tag. Tutaj mam na myśli stronę w ogólnym znaczeniu, a nie WordPress „strona”. Mamy kilka funkcji WordPress, które mogą pomóc, takich jak:
-
get_the_title()
: aby uzyskać bieżący post/page/any post type title -
single_cat_title()
: aby uzyskać bieżący tytuł kategorii. Istnieją również funkcje rodzeństwa dla tagów i terminów:single_tag_title()
isingle_term_title()
-
get_bloginfo()
: aby uzyskać nazwę bloga - etc.
Używanie tych funkcji jest świetne, ale mają one pewne wady:
- Te funkcje są specyficzne dla poszczególnych stron, takich jak pojedynczy post/strona, kategoria/tag, … strony. Ale możemy mieć wiele typów stron w WordPressie, takich jak: strona 404, strona wyników wyszukiwania, strona archiwum, a nawet strona wirtualna.
- Tytuł wyświetlany inaczej w motywach: możesz użyć motywu, który ma tytuł w formacie
Post Title | Blog Name
, ale inny motyw może używać tylkoPost Title
. Możesz wykonać kombinację powyższych funkcji, aby uzyskać poprawny tytuł, ale nie będzie to szeroko stosowane w innych motywach. - Albo możesz ustawić tytuł na różne sposoby za pomocą wtyczek SEO
W tym poście użyję prostej sztuczki, która może szybko rozwiązać te problemy.
Jestem pewien, że wszyscy z nas są zaznajomieni z funkcją wp_title()
, często używamy tej funkcji w pliku header.php
, jak to:
<title><?php wp_title( '|', true, 'right' ); ?></title>
do wyświetlania tytułu strony (powinieneś używać tylko tej funkcji do wyświetlania tytułu strony, w przeciwnym razie twoja strona może nie być kompatybilna z wtyczkami SEO lub powoduje problem z wydajnością).
Trickiem jest zmiana drugiego parametru $echo
z true
na false
, aby uzyskać wartość bieżącego tytułu strony:
$title = wp_title( '|', false, 'right' );
Oto przykład, w którym ta technika jest przydatna. Zamierzamy wyświetlić przycisk Twittera. Użyję innej fajnej techniki, aby uzyskać aktualny adres URL strony:
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 ));
Obecnie używam powyższego skryptu (z kilkoma dodatkami dla przycisków Facebook like, Google+) dla moich stron. I to działa świetnie w stronach archiwalnych, gdzie wbudowane funkcje WordPress nie są zbyt pomocne.