Getting page and subpage and parent(s) name in title bar with wordpress.
Had been working with wordpress (2.8.1) lately for some web development work. Now there were some section of the site which are sub pages of some parent page again which are sub pages of some category.
lets say you have we have a scenario like this
Products is the main category. Then it has two sub categories say Laptops and Desktops
And Laptops has sub categories 14 inches, 17 inches
Desktops have sub categories Home, Office, Game Station.
When the user browses to a page say Game Station you want to display on the title bar:
Website Name » Products
Website Name » Products » Desktops
Website Name » Products » Desktops » Game Station
or
Website Name » Products » Laptops
etc
I will assume that you already know how to have pages arranged in categories and subcategories in wordpress.
What we need is to do is use few available inbuilt functions of wordpress
1. get_post_ancestors() Read more..
this one get the ancestor of the given page/post id
2. the_ID() Read More..
this get you the current post id
3. get_post() Read More
gets the info of a given post id. Returns an object.
4. the_title()
returns the name of current page.
So here is the code.
Open the header.php (from the selected theme)
and add the following between the <title> and </title>
<title> Website Name: »
<?php
$postsarray = (get_post_ancestors(the_ID()));
krsort($postsarray);
foreach($postsarray as $key=>$postid)
{
$post_ids = get_post($postid);
$title = $post_ids->post_title;
echo “$title » “;
}
the_title();
?>
</title>
This will generate the title with the page and parent categories automatically.
Here is what is happening.
You can directly write you website name i.e hard code it, line
$postsarray = (get_post_ancestors(the_ID()));
get_post_ancestors() returns an indexed array containing the list of all the parent categories. Say if the current page is ‘Game Station’ then my array $postarray will be link (0=>’127′, 1=>’140′). We have used the function the_ID() inside the get_post_ancestors() so that the page id is automatically given accordingly to the current page. Note that the array contains the post id and not the name.
krsort($postsarray);
Since the array is from top category to lower we reverse sort it on the keys.
foreach($postsarray as $postid)
{
$post_ids = get_post($postid);
$title = $post_ids->post_title;
echo “$title » “;
}
The foreach loop picks every post id which we give to a function get_post(), which returns a object. Here the object is in $post_ids. The object contains loads of info about the post, but we are only interested in the title. So $post_ids->post_title; returns the name of the currently created objects. We store this in $tilte;
echo “$title » “;
This line get the categories displayed. Of course parent first.
the_title();
It is used here since the above functionality only returns the ancestors, so to display the name of the current page we use the_title() function.
If you want to display the name of you blog name instead of you website. replace ‘Website Name’ with <?php bloginfo(’name’) ?>
Well that is it for now.














