[WordPress]タクソノミーのタームが増えたらリンクが動的に新しいタームへ切り替わるナビゲーションの作り方。

カテゴリー:
WordPress

2016年、2017年、2018年というような「年度」をカスタムタクソノミータームとした、毎年タームが増えていくWordPressサイトを作った時のメモです。

グローバルメニューの中に「最新年度のカスタムタクソノミーアーカイブページヘのリンク」が必要で、年度が変わってタームが増えたら自動的に最新年度ページへのリンクを出力する仕組みが必要になりました。

今年が2016年だったとして、来年になったら自動的に2017年のカスタムタクソノミータームアーカイブページへリンクを切り替えたいわけです。

仕様として、カスタムタクソノミーは「year」、タームは前述のように「年度」、タームスラッグは「西暦」とします。

term-sample

コードを以下のように作りました。

タクソノミー「year」のターム「西暦」の最新を取得するために、get_terms()でターム情報が入ったオブジェクトを取得し、「最新の西暦」であるタームを取得するためにタームスラッグを降順でソート。タームスラッグを西暦にしてあるので、新しい年が常にオブジェクトの一番目に来ます。

取得したターム「最新の西暦」の名前とスラッグを組み合わせてリンクを生成します。

※get_terms()で以下のようなオブジェクトが取得できます。
term-array

get_terms()の二番目の引数のオプションに「hide_empty」というのがあるのですが、これでハマりました。デフォルトではtrueになっているのですが、そのままだと「タームは作ったけど投稿はまだ無い」という場合に、オブジェクトの中に入ってきません。場合によっては$terms[0]->slugで取りたくても[0]が無い!という状況になってしまいます。

うまくいかない時はこのオプションに注意したほうが良さそうです。

コメントを残す

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