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(を検索します。ただし、見つけた行数を数えることが目的ではありません。それぞれの取得結果が、どのテンプレートへ渡り、どの画面の何を決めているかを書き出します。
次のように一つの処理を追うと、確認範囲を絞れます。
get_terms()を使う箇所を見つける。- 取得した値から、名称、スラッグ、件数、親子関係のどれを使うかを確認する。
- その値で作る一覧、リンク、絞り込み、並び替えを記録する。
- 更新後に、その画面で代表となる分類を開く。
- 画面の崩れだけでなく、リンク先と投稿の集まり方まで確認する。
処理を直すときは、WP_Termかどうかだけに対応させるのではなく、必要なプロパティを明示します。名称が必要ならname、URLのために使うならslugまたは既存のリンク生成関数、件数で分けるならcountを使います。目的が分かる形にしておけば、次のWordPress更新で戻り値の見た目が変わっても、何を確認すべきかが残ります。
分類の設計を不具合修正へ混ぜない
更新後にタグ一覧が崩れたとき、カテゴリー名を変えたり、タグを付け直したりして直そうとすると、問題の場所が分からなくなります。分類の名称、親子関係、読者へ見せる導線は、検索や内部リンクにも関わる設計です。WP_Termへの対応とは別に扱います。
先に確かめるのは、既存の分類が既存のURLと画面で使えるかです。そのうえで、読者が探す単位としてカテゴリーとタグを見直すなら、目的、URL、過去の記事への影響を別に判断します。コードの修正を委託する場合も、分類の設計変更まで依頼内容へ含めるかを分けておくと、作業後に何が変わったかを確認できます。
最初の一手は、get_terms()かget_term()を使う独自処理を一つ選び、その結果が出る画面を更新前後で開くことです。表示、リンク先、投稿の集まり方がそろっていれば、次の処理へ進めます。
関連記事

