• WordPress 4.4のWP_Termは分類を扱う独自処理の戻り値を確認する

WordPress 4.4のWP_Termは分類を扱う独自処理の戻り値を確認する

公開日: 執筆:佐藤

WordPress 4.4へ更新すると、カテゴリー、タグ、独自タクソノミーを取得する関数は、stdClassではなくWP_Termオブジェクトを返します。テーマやプラグインで分類を独自に処理しているサイトは、分類そのものを作り直す前に、値を取得してから表示へ渡す処理を確認します。通常のカテゴリー一覧が表示されていても、型を前提にした加工だけが崩れることがあるためです。

管理画面でカテゴリーを選び、投稿へタグを付けるだけなら、まず大きな作業にはなりません。注意するのは、分類名、スラッグ、件数、リンク先をPHPで取り出し、一覧、絞り込み、関連投稿、サイドバーへ使っている部分です。更新作業で確認する対象と、読者のために分類を設計し直す作業は分けます。

WP_Termで変わるものと変わらないもの

WordPress 4.4のタクソノミー変更資料は、WP_Termクラスの導入を案内しています。get_term()、get_term_by()で一件を取り出す場合も、get_terms()、wp_get_object_terms()で複数を取り出す場合も、返る値はWP_Termになります。

WP_Termにはterm_id、name、slug、taxonomy、description、parent、countが公開プロパティとして用意されています。したがって、取得した値から$term->nameを表示するだけのテーマは、型の変更だけで直ちに書き換える理由がありません。公式資料も、この変更は4.4の段階では大きな影響を与えるものではないと説明しています。

一方で、次のような処理は確認が必要です。

  • 取得した値がstdClassかどうかを調べてから分岐している。
  • オブジェクトのクラス名を前提に、別の値へ変換している。
  • 返り値を配列へ入れ直し、独自のキャッシュや検索条件として保存している。
  • カテゴリーとタグをまとめて扱うために、取得結果の並びや型を比較している。

問題になるのは「カテゴリー」という名前ではなく、カテゴリーを取得したあとで何をしているかです。同じget_terms()でも、単に名称を出す処理と、結果を加工して絞り込みURLを組み立てる処理では、調べる場所が違います。

表示の確認だけでは足りない場合がある

たとえば、工事内容の分類をサイドバーへ並べ、各分類の下に投稿件数とリンクを表示しているテーマを考えます。名称とリンクだけなら画面上の確認で気付きやすいのですが、件数に応じて表示順を変える処理や、親子関係を独自にまとめる処理は、対象の分類を一つだけ開いても見落とします。

確認する画面は、分類を使う役割ごとに選びます。

分類を使う役割 代表として開く画面 確認する内容
投稿に付いた分類を表示する 個別投稿 名称、リンク先、親子関係の表示
分類ごとの投稿を集める カテゴリーまたはタグの一覧 投稿件数、並び、ページ送り
分類を選んで絞り込む 独自の一覧ページ 選択した条件と結果が一致するか
分類を案内する サイドバー、フッター、メニュー 空の分類、件数、リンク切れの有無

独自タクソノミーがあるサイトは、カテゴリーとタグだけを見て終えないでください。たとえば「地域」「施工種別」「製品分類」のように投稿へ付けた分類があれば、その分類名、スラッグ、親子関係、件数を使う画面を一つずつ選びます。分類が同じ表示名でも、タクソノミーが違えば、取り出す値とURLは別です。

更新前に調べるのは関数名より、その先の処理である

更新前には、テーマと独自プラグインからget_term(、get_term_by(、get_terms(、wp_get_object_terms(を検索します。ただし、見つけた行数を数えることが目的ではありません。それぞれの取得結果が、どのテンプレートへ渡り、どの画面の何を決めているかを書き出します。

次のように一つの処理を追うと、確認範囲を絞れます。

  1. get_terms()を使う箇所を見つける。
  2. 取得した値から、名称、スラッグ、件数、親子関係のどれを使うかを確認する。
  3. その値で作る一覧、リンク、絞り込み、並び替えを記録する。
  4. 更新後に、その画面で代表となる分類を開く。
  5. 画面の崩れだけでなく、リンク先と投稿の集まり方まで確認する。

処理を直すときは、WP_Termかどうかだけに対応させるのではなく、必要なプロパティを明示します。名称が必要ならname、URLのために使うならslugまたは既存のリンク生成関数、件数で分けるならcountを使います。目的が分かる形にしておけば、次のWordPress更新で戻り値の見た目が変わっても、何を確認すべきかが残ります。

分類の設計を不具合修正へ混ぜない

更新後にタグ一覧が崩れたとき、カテゴリー名を変えたり、タグを付け直したりして直そうとすると、問題の場所が分からなくなります。分類の名称、親子関係、読者へ見せる導線は、検索や内部リンクにも関わる設計です。WP_Termへの対応とは別に扱います。

先に確かめるのは、既存の分類が既存のURLと画面で使えるかです。そのうえで、読者が探す単位としてカテゴリーとタグを見直すなら、目的、URL、過去の記事への影響を別に判断します。コードの修正を委託する場合も、分類の設計変更まで依頼内容へ含めるかを分けておくと、作業後に何が変わったかを確認できます。

最初の一手は、get_terms()かget_term()を使う独自処理を一つ選び、その結果が出る画面を更新前後で開くことです。表示、リンク先、投稿の集まり方がそろっていれば、次の処理へ進めます。

戻る