[WordPress]最新記事に固定のURLでアクセスする
(2017年3月16日追記:本記事は、wp-load.php をインクルードする方法が使えない場合であることを明記しました)
既存のサイトをリニューアルするときに、更新の多い一部のカテゴリだけをCMSに置き換えるということが良くあると思います。
今回は、サイトのほとんどはそのままで、毎日のように更新される「最新情報」の部分だけをWordPressに置き換えるという案件でした。
ここで問題になったのが、WordPressの範囲外にあるページのメニューにある「最新情報」ボタンのリンク先でした。
これまでは手動更新で、最新記事は常に同じURLで公開し、古くなった記事はリネームしていくという方法をとっていたらしいのですが、 これはSEO的に問題ありです。
方法の検討
PHPが使えるのであれば、WordPressの範囲外のページでも、wp-load.phpをインクルードすることで、WordPress関数を使って最新記事にアクセスできます。
(詳しくは、”wp-load.php 外部から” などでググってみてください)
今回は、WordPress以外の部分はクライアントが更新するという事情があって、最新情報ボタンのあるページにPHPが組み込めません。
そのため、ある固定の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関数でリダイレクトするというわけです。
次に、新規で固定ページを作成します。
ポイントは、右側の「ページ属性」の項目「テンプレート」です。
ここで、先ほどのテンプレートファイル「newEntry」を選びます。
ページのタイトルは適当にわかりやすいものを入れてください。
ページの本文内容は空でOKです。
スラッグはURLになるので、わかりやすいものを設定します。
今回は「newentry」としました。
これで固定ページを作成します。
すると、http://example.com/newentry にアクセスすると最新記事にリダイレクトされるようになります。
このURLを「最新情報」ボタンのリンク先に設定してやれば完成です。
固定ページとテンプレートファイルの組み合わせで、静的なHTMLファイルから動的に変化するURLにアクセスできるというワザは、他でもよく使われているので覚えておいて損はなさそうですね。
カテゴリー内の最新記事にリンクする
とあるサイトにコラムコンテンツを追加した時の事。 今までコンテンツのトップは、過去記事の一覧を表示させるようにしていましたが、 無料ブログのように、最新記…
「wordpress 最新記事への 固定リンク名」でGoogle検索して初めて訪問します。
欲しい情報が的中しました!完璧に動作しています。ありがとうございました。
コメントありがとうございます。お役に立てて良かったです。
もう6年も前の記事なんですよね。ちょっと懐かしいです。