この記事をシェアする

昨夜、WordPress 4.1 RC1 がリリースされまして、今回のバージョンではテーマで使うテンプレートタグが幾つか追加される予定なので先取りで紹介しようかと思います。

なお、執筆時点で WordPress 4.1 のリリースは 2014年12月16日となっています。

WordPress 4.1 デベロッパー向け情報

デベロッパー向け情報は以下のリンクを参考に
https://make.wordpress.org/core/tag/4-1-dev-notes/

この中で新しいテンプレートタグとして「Archive Template Tags」(アーカイブ用テンプレートタグ)「Navigation Template Tags」(ナビゲーション用テンプレートタグ)が掲載されています。

Archive Template Tags

追加されるのは以下の4つ。

  • get_the_archive_title() and the_archive_title()
  • get_the_archive_description() and the_archive_description()

ざっくり実行結果として get_* は returnのみ(echoしない)、the_* は出力(echo)される、とおぼえておきましょう。

the_archive_title() は表示しているターム(カテゴリー、タグ、カスタム分類)や日別、投稿タイプ、投稿者のアーカイブにあわせてタイトルを出力します。

the_archive_description() は上記と同じ条件で、説明を表示します。

実はこの部分は _s では archive.php に先取りで実装されています(実際には下位互換をとるため、inc/template-tags.php にも書かれてます)

<header class="page-header">
    <?php
        the_archive_title( '<h1 class="page-title">', '</h1>' );
        the_archive_description( '<div class="taxonomy-description">', '</div>' );
    ?>
</header><!-- .page-header -->

すごくスッキリしました。
特別な理由がない限り、archive.php のみで カテゴリーからカスタム投稿タイプのアーカイブまで汎用的に対応できるようになります。

Navigation Template Tags

追加されるのは以下の6つ。

  • get_the_post_navigation() and the_post_navigation()
  • get_the_posts_navigation() and the_posts_navigation()
  • get_the_posts_pagination() and the_posts_pagination()

the_post_navigation()

the_post_navigation() は single.php で投稿記事の前後リンクに使われます。
このタグだけで以下のような結果が得られます。

<nav class="navigation post-navigation" role="navigation">
    <h2 class="screen-reader-text">Post navigation</h2>
    <div class="nav-links">
        <div class="nav-previous"><a href="http://example.com.local/archives/3" rel="prev">古いの記事のタイトル</a></div>
        <div class="nav-next"><a href="http://wordpress.local/archives/1" rel="next">新しいの記事のタイトル</a></div>
    </div>
</nav>

いい感じに一番新しい記事や古い記事の場合でも、リンク先がなければその部分は出力されません。
また関数の内部は今まで使われてきた previous_post_link()next_post_link() で処理されています。

the_posts_navigation()、the_posts_pagination()

the_posts_navigation()the_posts_pagination() はアーカイブ系で使います。
the_posts_navigation() は前後のリンク。the_posts_pagination() はページネーション(ページャー)での出力になります。

どちらも内部では既存の関数を使って処理されています。

the_posts_navigation() の出力結果はこちら。
もちろんページがなければ、リンク部分も出力されません。

<nav class="navigation posts-navigation" role="navigation">
    <h2 class="screen-reader-text">Posts navigation</h2>
    <div class="nav-links">
        <div class="nav-previous"><a href="http://wordpress.local/page/3">Older posts</a></div>
        <div class="nav-next"><a href="http://wordpress.local/">Newer posts</a></div>
    </div>
</nav>

the_posts_pagination() の出力結果はこちら。
一番最初のページや最終ページ、省略なども自動で計算してくれます。

<nav class="navigation pagination" role="navigation">
    <h2 class="screen-reader-text">Posts navigation</h2>
    <div class="nav-links">
        <a class="prev page-numbers" href="http://wordpress.local/page/9">Previous</a>
        <a class="page-numbers" href="http://wordpress.local/">1</a>
        <span class="page-numbers dots">…</span>
        <a class="page-numbers" href="http://wordpress.local/page/9">9</a>
        <span class="page-numbers current">10</span>
        <a class="page-numbers" href="http://wordpress.local/page/11">11</a>
        <span class="page-numbers dots">…</span>
        <a class="page-numbers" href="http://wordpress.local/page/20">20</a>
        <a class="next page-numbers" href="http://wordpress.local/page/11">Next</a>
    </div>
</nav>

この情報はあくまで WordPress 4.1 RC1 時点での出力結果です。
出力されるクラス名などまだ取り込まれていないパッチもあり、正式リリース時点では変わる可能性もあること、ご了承ください。

追記1

テストがてら _s をフォークして実装してみたのでテストしてみたい方はどうぞ。

追記3参照

追記2

WordPress 4.1 ライブになりました。

追記3 (2014.1.8)

WordPress 4.1 がライブになったので _s の当該部分をプルリクエストで送ってマージされました。めでたい。

この記事をシェアする