元ネタはこちら ↓

WebTecNote - [wp] ページタイトルとパンくずリンクを統一する
http://tenderfeel.xsrv.jp/wordpress/816/

パンくずリストを表示させ、かつ、ブラウザに表示されるタイトル(HTMLの title 部分)もこれと一致させる方法です。
以下をテーマのテンプレート「header.php」の当該箇所に記載。

<title>< ?php print($GLOBALS['local_head_title']); ?>< ?php bloginfo('name'); ?></title>
以下をテーマのテンプレート(表示させたい場所に合わせて任意。通常の感覚では「header.php」の下の方)に記述。
ソースを見て貰えれば分かる通り、HTMLタグも一緒に出力しているのでこのままでO.K.。
または後述のソース内のHTMLの箇所をご自身の用途に合わせて修正して下さい(僕は p を span に変えました。この辺は好みで)。
< ?php breadcrumb();?>
テーマの functions.php に以下の二つのソースを記述(但し、<?php と ?> に挟まれた任意の場所に。他のコードの途中に誤って記述してぶった切ってしまわないように、ソースはよく読んで。動かなくなります笑)

$local_body_id = null;
$local_page_title = null;
$local_category = null;
$local_head_title = null;
$local_category_title = null;</p>
<p>function set_page_title(){
    global $local_body_id, $local_page_title, $cat, $local_category,
    $local_head_title, $local_category_title,$s,$author_name,$post;</p>
<p>    if(is_category()){
        $local_category = get_category($cat);
        $local_category_title = $local_category->name;</p>
<p>        if($local_category->parent)
            $local_page_title = get_category_parents($local_category->parent, false, '');</p>
<p>        if($local_page_title)
            $local_head_title = wp_title('', false, 'right').' &laquo; '.$local_page_title . ' | ';
        else
            $local_head_title = wp_title('', false, 'right'). ' | ';</p>
<p>    } elseif(is_author()) {
        $author = get_query_var('author');
        $author_obj = get_userdata($author);</p>
<p>        $local_category_title ='';
        $local_page_title = $author_obj->last_name.$author_obj->first_name;
        $local_head_title = $local_page_title. ' | ';</p>
<p>    }else if(is_archive()){</p>
<p>        if(is_tag()){
            $tag = get_query_var('tag_id');
            $tag = get_term($tag, 'post_tag', OBJECT, 'display');</p>
<p>                //var_dump($tag);
                if ( is_wp_error( $tag ) )
                    $local_page_title = $tag;
                if ( ! empty($tag->name) )
                    $local_page_title = apply_filters('single_tag_title', $tag->name);</p>
<p>                $local_head_title = wp_title('', false, 'right').' | ';
                $local_category_title = 'タグ: '.$local_page_title;</p>
<p>        }elseif(is_day()){
            $local_category_title = get_the_time(get_option('date_format'));
            $local_page_title = $local_category_title.'のアーカイブ';
            $local_head_title = $local_page_title.' | ';</p>
<p>        }elseif(is_month()) {
            $local_category_title = get_the_time('Y年F');
            $local_page_title = $local_category_title.'のアーカイブ';
            $local_head_title = $local_page_title.' | ';
        } elseif(is_year()) {
            $local_category_title = get_the_time('Y年');
            $local_page_title = $local_category_title.'のアーカイブ';
            $local_head_title = $local_page_title.' | ';
        }</p>
<p>    }else if(is_search()){
        $allsearch =& new WP_Query("s=$s&showposts=-1");
        $key = wp_specialchars($s, 1);
        $count = $allsearch->post_count;
        $local_category_title = "検索結果";</p>
<p>        if($count!=0){
            $local_head_title = "『".$key."』の検索結果 | ";
            $local_page_title = '<em>'.$key.'</em>で検索した結果、<strong class="count">'.$count.'件</strong>ヒットしました。';
        }else{
            $local_head_title = "『".$key."』の検索結果 | ";
            $local_page_title = '<em>'.$key.'</em>で検索しましたが、何も見つかりませんでした。';
        }</p>
<p>    }else if(is_page()){
        if($post->post_parent){
            $local_category_title = get_the_title($post->post_parent);
            $local_head_title = wp_title('&laquo;', false, 'right').$local_category_title." | ";
        }else{
            $local_head_title = wp_title('', false, 'right')." | ";
        }
        $local_page_title = get_the_title();</p>
<p>    }else if(is_single()){</p>
<p>        if(is_attachment()){
            $local_category_title = get_the_title($post->post_parent);
        }else{
            $local_category = get_the_category();
            $local_page_title = $local_category[0]->cat_name;</p>
<p>        /*if($local_category[0]->parent){
            $local_head_title = get_category_parents($local_category[0]->parent, false, '');
        }*/
            $local_page_title = get_the_title();
            $local_category_title = $local_category[0]->cat_name;
        }
            $local_head_title = wp_title('', false, 'right').' &laquo; '.$local_category_title. ' | ';
    }else if(is_404()){
        $local_category_title = __('Error');
        $local_page_title = __('404 Not Found');
        $local_head_title = wp_title('', false, 'right')." | ";
    }
}</p>
<p>add_action('get_header', set_page_title, 10);

//ぱんくず

function breadcrumb(){
    global $local_body_id, $local_page_title, $local_category,$local_category_title,$post;</p>
<p>    if(!is_home()&&!is_front_page()){
        print '
<p class="breadcrumb">';
        print ''.__('Home').'&gt; ';</p>
<p>    if(is_category()){
        if($local_category->parent)
            echo(get_category_parents($local_category->parent, TRUE, '&gt; '));
        print '<span class="current">'.single_cat_title().'</span>';</p>
<p>    } elseif (is_author()) {
        print '<span class="current">ユーザー&gt; '.$local_page_title.'</span>';
    }else if(is_archive()){</p>
<p>        if(is_tag()){
            print 'タグ:'.'<span class="current">'.$local_page_title.'</span>';
        }else{
            print '<span class="current">'.$local_page_title.'</span>';
        }</p>
<p>    }else if(is_search()){
        print '<span class="current">サイト内検索</span>';
    }else if(is_page()){
        if($post->post_parent)
            print '<a href="'.get_permalink($post->post_parent).'" title="'.the_title_attribute('echo=0').'">'.get_the_title($post->post_parent).'</a>&gt; ';
        print '<span class="current">'.the_title().'</span>';</p>
<p>    }else if(is_single()){</p>
<p>        if(is_attachment()){
            print '<a href="'.get_permalink($post->post_parent).'" title="'.the_title_attribute('echo=0').'">'.get_the_title($post->post_parent).'</a>&gt; ';
        }else{
            if($category[0]->parent)
                echo(get_category_parents($local_category[0]->parent, TRUE, '&gt; '));</p>
<p>            print '<a href="'.get_category_link($local_category[0]->term_id).'">'.$local_category[0]->cat_name.'</a>&gt; ';
        }
        print '<span class="current">'.the_title().'</span>';</p>
<p>    }else{
        print '<span class="current">'.$local_page_title.'</span>';
    }</p>
<p>    print '</p>
<p>';</p>
<p>    }
}

元ソースと見比べて貰えば分かると思いますが、三行目の

if(!is_home()||!is_front_page()){
if(!is_home()&&!is_front_page()){
に改変しています。この方が適正かと個人的には思います故。

一昨日投稿時には改変箇所の記述を忘れて元ソースをそのまま丸写しただけでした。訂正してお詫びします。(これはこれで元ソースが何らかの事情で消えてしまった場合の「有益な情報を保存しておく」意味はあるでしょうけど)

2012年4月7日3時34分 加筆訂正:バグ除去。 

get_the_time('Y年F');
の記述を
get_the_time(get_option('date_format'));
に変更。こちらの方がスマートなので。

最終更新日:2014年6月19日