[WordPress]最新記事に固定のURLでアクセスする

既存のサイトをリニューアルするときに、更新の多い一部のカテゴリだけをCMSに置き換えるということが良くあると思います。

今回は、サイトのほとんどはそのままで、毎日のように更新される「最新情報」の部分だけをWordPressに置き換えるという案件でした。
ここで問題になったのが、WordPressの範囲外にあるページのメニューにある「最新情報」ボタンのリンク先でした。
これまでは手動更新で、最新記事は常に同じURLで公開し、古くなった記事はリネームしていくという方法をとっていたらしいのですが、 これはSEO的に問題ありです。

方法の検討

WordPressの範囲外のページをWordPress側でどうにかすることはできません。
そこで今回は、ある固定のURLにアクセスすると、最新記事にリダイレクトさせられないか考えてみました。

カテゴリを丸ごとCMSに置き換えた場合は、カテゴリのトップページに最新記事を表示させるようなカスタマイズをし、カテゴリトップページをリンク先にすることで実現できます。
(カテゴリトップページは固定URLにできますからね)
しかし今回は、カテゴリのトップページではなく、記事ページを表示するようにしてみたいと思います。 

MovableTypeであれば、.htaccess をインデックステンプレートで書き出すという荒技を使うのですが(笑)、WordPressには無理そうです。 

そこで、PHPのheader関数でリダイレクトさせるようにしてみました。
テンプレートファイルに最新記事にリダイレクトするコードを書いて、固定ページに設定するという方法です。

実際の手順

まず、エディタでテンプレートファイルを作って、テーマのディレクトリにアップロードします。 

<?php /*
Template Name: newEntry
*/ ?>
<?php
$loop = new WP_query('category_name=jyoho&showposts=1'); // 最新情報へのリンク
while ($loop->have_posts()) : $loop->the_post();
$url = get_permalink($post->ID);
endwhile;
header("Location: ".$url);
?>

Template Nameは何でも構いませんが、機能を示すものがいいでしょう。
今回は「newEntry」にしてみました。

WP_Queryの引数は、用途によって変わります。
今回は、jyohoカテゴリの最新記事にアクセスしたいので、このような引数になっています。
そのあとのループで最新記事のURLを取得して、header関数でリダイレクトするというわけです。

次に、新規で固定ページを作成します。

20120424-1.jpgポイントは、右側の「ページ属性」の項目「テンプレート」です。
ここで、先ほどのテンプレートファイル「newEntry」を選びます。
ページのタイトルは適当にわかりやすいものを入れてください。
ページの本文内容は空でOKです。
スラッグはURLになるので、わかりやすいものを設定します。
今回は「newentry」としました。

これで固定ページを作成します。

すると、http://example.com/newentry にアクセスすると最新記事にリダイレクトされるようになります。
このURLを「最新情報」ボタンのリンク先に設定してやれば完成です。

固定ページとテンプレートファイルの組み合わせで、自作のPHPファイルに固定URLでアクセスできるというワザは、他でもよく使われているので覚えておいて損はなさそうですね。 

[WordPress]最新記事に固定のURLでアクセスする” に対して1件のコメントがあります。

  1. WordPress memo より:

    カテゴリー内の最新記事にリンクする

    とあるサイトにコラムコンテンツを追加した時の事。 今までコンテンツのトップは、過去記事の一覧を表示させるようにしていましたが、 無料ブログのように、最新記…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です