当ブログはMovabletype時代から6年間更新を続けています。その中でデザインやリンク構造を変更しながら、最適なユーザビリティとSEOの両立を意識してきました。
WordPress化の際は、これまでの形を完全に再現するために、一からテーマを自作しました。
当ブログで特に意識しているポイントを紹介します。
ページの分割をしない
WordPressの普通のテーマだと、トップページやカテゴリーページにページネーションや次のページ&前のページへのリンクがついて、ページが分割されます。わかったブログでは、導入していません。同じタイトル名のページが無意味に増えることになるからです。重複タイトルはSEO的にNGです。
Movabletype時代にページネーションでカテゴリーページを分割したところ、検索エンジンからのアクセスが激減してしまいました。ページネーションを外したらアクセスも元に戻りました。その時の経験から得た知見です。ちなみに「タグ」も似たようなページが増えるので使っていません。
ページネーションを利用しない場合、設定ページの「1ページに表示する最大投稿数」を増やさないといけません。しかし、この値はWPtouchと連動しているため、スマホページの表示件数も多くなってしまい、重くなってしまいます。個別に表示件数をカスタマイズできるCustom Query String Reloadedプラグインを導入して、カテゴリーページの表示件数を個別に調整しています。
【追記】ブクマで、「正規化すれば良い」という意見を頂きました。十分気をつけて行ってください。正規化は複雑です。当ブログでは行っていません。
ページネーションにおけるrel=“canonical”タグの正しい使い方 at SMX West 2011
パンくずリスト
ユーザービリティの観点から、パンくずリストは必ず入れるようにしています。こちらのブログ記事を参考にして作りました。
function.phpファイルに下記を追加。
[php]
<?php
//パンくずリスト
function get_breadcrumbs(){
global $wp_query;
if ( !is_home() ){
// Start the UL
echo ‘<ul class="breadcrumbs">’;
// Add the Home link
echo ‘<li><a href="’. get_settings(‘home’) .’">’. get_bloginfo(‘name’) .'</a> » </li>’;
if ( is_category() )
{
$catTitle = single_cat_title( "", false );
$cat = get_cat_ID( $catTitle );
$breadcrumbs = "<li>". get_category_parents( $cat, true, ‘ » ‘ )."</li>";
echo preg_replace( ‘/(.*) » /’, ‘$1’, $breadcrumbs );
// echo "<li>". get_category_parents( $cat, TRUE, " » " ) ."</li>";
}
elseif ( is_archive() && !is_category() )
{
echo "";
}
elseif ( is_search() ) {
echo "<li>Search Results</li>";
}
elseif ( is_404() )
{
echo "<li>404 Not Found</li>";
}
elseif ( is_single() )
{
$category = get_the_category();
$category_id = get_cat_ID( $category[0]->cat_name );
echo ‘<li>’. get_category_parents( $category_id, TRUE, " » " );
// echo the_title(”,”, FALSE) ."</li>";
echo "</li>";
}
elseif ( is_page() )
{
$post = $wp_query->get_queried_object();
if ( $post->post_parent == 0 ){
//echo "<li>".the_title(”,”, FALSE)."</li>";
} else {
$title = the_title(”,”, FALSE);
$ancestors = array_reverse( get_post_ancestors( $post->ID ) );
array_push($ancestors, $post->ID);
foreach ( $ancestors as $ancestor ){
if( $ancestor != end($ancestors) ){
echo ‘<li> » <a href="’. get_permalink($ancestor) .’">’. strip_tags( apply_filters( ‘single_post_title’, get_the_title( $ancestor ) ) ) .'</a></li>’;
} else {
echo ‘<li> » ‘. strip_tags( apply_filters( ‘single_post_title’, get_the_title( $ancestor ) ) ) .'</li>’;
}
}
}
}
// End the UL
echo "</ul>";
}
}
?>
[/php]
そして、パンくずを表示したい部分に、下記コードを挿入すればOKです。
[php]
<?php get_breadcrumbs(); ?>
[/php]
関連記事リスト
各記事の下部に、同じカテゴリーの記事を関連記事として、表示しています。こちらもユーザビリティの観点からです。そして、同じジャンルの記事同士でリンクすることで、記事のテーマをより明確にGoogleに伝えることを目的としています。
当ブログで利用しているコードを、そのままコピペしておきます。
※下記コードでは全記事が出てしまいます。数を指定したい場合は、&numberposts=-1の部分を&numberposts=10にすれば、10記事だけ表示できます。
[php]
<?php if(is_single()):?>
<?php $categories = get_the_category();
foreach($categories as $category):
$related_posts = get_posts(‘category=’.$category->cat_ID.’&exclude=’.$post->ID.’&numberposts=-1′);
if($related_posts): ?>
<ul>
<?php foreach($related_posts as $related_post): ?>
<li><a href="<?php echo get_permalink($related_post->ID); ?>"><?php echo $related_post->post_title; ?></a> <a href="http://b.hatena.ne.jp/entry/<?php echo get_permalink($related_post->ID); ?>"><img src="https://b.hatena.ne.jp/entry/image/<?php echo get_permalink($related_post->ID); ?>" border="0" style="vertical-align: middle;"></a></li>
<?php endforeach; ?>
</ul>
<?php endif; endforeach; ?>
<?php endif; ?>
[/php]
サイトマップ
Movabletype時代からsitemap.xmlを置いて、Googleウェブマスターツールで登録していました。いきなり無くなるのもマズイので、WordPressでも対応しました。Google XML Sitemapsプラグインで簡単に実装できるので便利ですね。
記事タイトルにブログ名を入れない
ブランディング的には入れたほうが良いという話もありますが、当ブログでは入れていません。デフォルトでは「ブログ名 » 記事タイトル」と表示されてしまうので、下記のようなコードを利用してトップページ以外ではブログ名が入らないようにしています。
[php]
<?php if ( is_home() ) { ?>
<title><?php bloginfo(‘name’); ?></title>
<?php } elseif(is_month()) { ?>
<title><?php echo monthtitle(); ?></title>
<?php } else { ?>
<title><?php wp_title(”); ?></title>
<?php } ?>
[/php]
ブランディング的に入れるとしても、
ではなく、
かなと思います。記事タイトルを前にしたほうが、SEO的には良いと思います。
記事タイトルに<h1></h1>タグをつける
デフォルトのテーマだと、トップページ以外の、カテゴリ、記事ページなどでも、ブログ名に<h1></h1>タグがつけられてしまいます。私は、カテゴリーページはカテゴリー名、記事ページは記事タイトルに<h1></h1>タグをつけるべきと考えています。
[php]
function hxheader($place){
if(is_home()){
if($place == 1) return "<h1>";
if($place == 2) return "</h1>";
} }else{
if($place == 1) return ‘<div id="blogname">’;
if($place == 2) return ‘</div>’;
}
}
function hxlisttitle($place){
if(is_single()){
if($place == 1) return ‘<h1 class="post_title">’;
if($place == 2) return ‘</h1>’;
}else{
if($place == 1) return ‘<h2 class="post_title">’;
if($place == 2) return ‘</h2>’;
}
}
[/php]
このような記述をfunction.phpに記述して、ブログ名は、
[php]
<?php echo hxheader(1); ?><a href="<?php echo home_url(); ?>"><?php bloginfo(‘name’); ?></a><?php echo hxheader(2); ?>
[/php]
テーマ内のタイトルは、
[php]
<?php echo hxlisttitle(1); ?><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><?php echo hxlisttitle(2); ?>
[/php]
と記述して、自動的に書き直しています。
▼▼▼▼
その他は、記事によっては、meta keywordsにキーワードを設定しています。WordPressではkeywordがデフォルトで設定できないため、カスタムフィールドで設定しています。
※本記事の内容が正しいかどうかは保証出来ません。実施する際は、自己責任でお願いします。
コメント