No products in the cart.
Access our premium support and let us know your problems, we will help you solve them.
Here’s my version:
$title = ucwords(str_replace('-', ' ', get_query_var('pagename')));
get_query_var(‘pagename’) was just giving me the page slug. So the above replaces all the dashes, and makes the first letter of each word uppercase – so it can actually be used as a title.
I believe that the Roots starter theme has a fantastic function to get the current page title. It is very hackable, covers all bases, and can be easily used with the wp_title
hook.
/**
* Page titles
*/
function roots_title() {
if (is_home()) {
if (get_option('page_for_posts', true)) {
echo get_the_title(get_option('page_for_posts', true));
} else {
_e('Latest Posts', 'roots');
}
} elseif (is_archive()) {
$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy'));
if ($term) {
echo $term->name;
} elseif (is_post_type_archive()) {
echo get_queried_object()->labels->name;
} elseif (is_day()) {
printf(__('Daily Archives: %s', 'roots'), get_the_date());
} elseif (is_month()) {
printf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y'));
} elseif (is_year()) {
printf(__('Yearly Archives: %s', 'roots'), get_the_date('Y'));
} elseif (is_author()) {
$author = get_queried_object();
printf(__('Author Archives: %s', 'roots'), $author->display_name);
} else {
single_cat_title();
}
} elseif (is_search()) {
printf(__('Search Results for %s', 'roots'), get_search_query());
} elseif (is_404()) {
_e('Not Found', 'roots');
} else {
the_title();
}
}
We just need to use the “post” global variable:
global $post;
echo $post->post_title;
This will echo the current page/post title.
Show the title before the loop starts:
$page_title = $wp_query->post->post_title;
This is what I ended up using, as of 2018:
<section id="top-<?=(is_front_page() ? 'home' : basename(get_permalink()));?>">