Wordpressで最新記事のURLを取得する方法
Wordpressで投稿記事の最新URLリンクを表示させる方法をご紹介します。
投稿・カテゴリ指定投稿・カスタム投稿など様々な指定をする事ができます。
テーマファイル上だけでなく、固定ページなどで最新記事URLリンクを付ける事も可能です。
常に変わる最新記事のURLを取得したい
Wordpressの通常投稿でもカスタム投稿でも、「最新記事」を表示したいってことありますよね。
phpファイルを用意する必要はない
ならば「最新記事用phpファイル」を用意すれば、と思うかも知れません。
通常記事を出力するテーマテンプレートは以下2つです。
一覧用…archive.php(archive-○○〇.php)
詳細用…single.php(single-○○〇.php)
これに加えて最新記事のためだけに別途phpファイルを用意するのは、非効率と言えるでしょう。
そんな時に使える小ネタです。
最新URLをphpで出力
投稿された最新の投稿記事を呼び出して、そのURLを出力する方法を紹介します。
ベースファイルは従来のsingle.phpであり、専用ファイルを用意する必要はありません。
常に最新記事を呼び出す訳ですから、新しい記事が出るたびに出力されるURLが変わります。
通常の投稿記事の最新URLを出す
まずは通常の投稿記事の最新URLを呼び出すコードです。
header.phpなどテーマファイルのメニュー表示部分に追記していきましょう。
どこで何回コードを使ってもOKです。
php出力コード例
<li><a href="<?php $recent = get_posts('numberposts=1'); if (count($recent) > 0) { $recent_id = $recent[0]->ID; $recent_url = get_permalink($recent_id); echo $recent_url; } ?>">最新記事</a></li>
コード解説
phpを囲う<li><a href=""></a></li>の部分は、HTMLコードの一例です。
実際は手元の環境の中で、href=""の間に「<?php ?>」を埋め込むようにして下さい。
2行目のnumberpostsでまずは1件、記事を特定しています。
3行目以降のifは特定した記事が存在する場合に実行され、記事が1件も無かったら何も出力しません。
4行目で最新記事の記事idを代入しています。
5行目で代入した記事のidに相当するリンクURLを呼び出して代入しています。
6行目でURLを実際に出力しています。
※上記は記事が一つもない場合は何も出力しませんが、本記事を見ている段階で記事がゼロの事は無いでしょうから割愛しています。
指定カテゴリ名のついた投稿記事最新URLを出す
投稿記事には様々なカテゴリ名を付ける事ができますよね。
その場合、特定カテゴリ名の付いた記事の中から最新のURLを出す事もできます。
php出力コード例
<li><a href="<?php $recent = get_posts('numberposts=1&category_name=job'); if (count($recent) > 0) { $recent_id = $recent[0]->ID; $recent_url = get_permalink($recent_id); echo $recent_url; } ?>">最新記事</a></li>
コード解説
上記例では、投稿記事のカテゴリが「job」になっている記事の最新を表示させています。
さっきと違うのは、1行目のカテゴリ指定「&category_name=job」部分だけですね。
指定したカテゴリ名の記事が1件もなかったら、URLは出力されません。
カスタム投稿タイプ「magagine」記事の最新URLを出す
最後に通常の投稿ではなく、カスタム投稿タイプの場合の最新記事出力です。
php出力コード例
<?php $myposts = get_posts( 'post_type=illustrator&orderby=date&order=DESC&numberposts=1' ); if ( empty( $myposts ) ): ?> <li><a href="#">記事がありません</a></li> <?php else: ?> <li><a href="<?php echo get_permalink( $myposts[0] ); ?>">最新magagine記事</a></li> <?php endif; ?>
コード解説
post_typeでカスタム投稿タイプ名の「magagine」を指定し、最新記事のURLを出力しています。
カスタム投稿の場合は記事idをベースにするのではなく、日付の新しいもの順に並べつつ、その最後の記事を選びます。
2行目のget_postsはそのためのものです。
3行目のif elseif構文で、記事が無い場合とそうでない場合の分岐HTMLを出力しています。
固定ページの中でこの最新記事リンクを付けたい
上記はいずれも、header.phpやfooter.phpなどテーマテンプレートファイルに記述します。
しかしケースによって、固定ページの中にこのような最新記事のURLリンクを付けたい場合もあるでしょう。
しかし固定ページの中に上記のphpコードをそのまま貼っても、phpは機能しません。
そこで出力phpを記述した専用ファイルを用意し、ショートコードを使って固定ページに埋め込みます。
phpファイルの作成
まず上記で紹介したphpコードを使い、固定ページ上で表示させたいHTMLソース部分を作りましょう。
※必要な箇所部分のみにして、それ以外は固定ページに入れておきましょう。
それを例えば「new_post.php」などで保存しましょう。
functions.phpへの追記
固定ページ内で特定phpファイルを動かせるようにfunctions.php内にコードを書きます。
function Include_my_php($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); include(get_theme_root() . '/' . get_template() . "/new_post.php"); return ob_get_clean(); } add_shortcode('new_post_php', 'Include_my_php');
これで固定ページのnew_post_phpのショートコードが入った箇所で、new_post.phpが動作するようになります。
追記したfunctions.phpを上書きUPしましょう。
固定ページにショートコードを入れる
固定ページ内のリンクを設置したい箇所に以下のショートコードを入れます。
[new_post_php file="new_post"]
命令名はfunctions.phpに記載した「new_post_php」です。
ファイル名は「new_post」のみで.phpは必要ありません。
こうする事で、固定ページの対象箇所にnew_post.phpで書いたコードが埋め込まれます。
これにより固定ページ内でも、常に最新情報のURLを表示させる事ができますね。