Articles

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() i single_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ć tylko Post 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.