更新:2018年06月11日/ろあんぬ(WEB)

Advanced Custom Fields(ACF)のTaxonomyが検索結果ページに反映されない対処法

こんにちは、ろあんぬ です。また需要の少ないWEB記事を書いちゃいますよ!一応雑記ブログだから許して!!

ちなみに自分が忘れないための技術的なメモです。

ACF「タクソノミー」でやりたかったこと

ACFプラグインの機能である「タクソノミー」型フィールドの呼び出しを記事一覧&記事詳細ページで行いたい。各記事で複数カテゴリを選択させたいが、その中でも特にどのカテゴリがメインであるかをさらに絞り込みさせたかったためです。

実際にやったこと

この辺は基本的に公式のドキュメンテーション通りのことをやりました。

<?php 
$term = get_field('設定したフィールド名');
if( $term ): ?>
<p><?php echo $term->name; ?></p>
<?php endif; ?>

↑こんな感じ。

しかしうまくいかなくて色々調べてたら、カスタムフィールド設定画面で「返り値」の値を「タームオブジェクト」に設定しないとうまく出力できないのでそれにするようにと先人の有難いお言葉に辿りついたので変更。無事表示された。

無事表示されたと思ったらエラー吐いてるやんけ

やったー!できたぞー!からのエラー。しかもエラーが出てるのは「検索結果ページ」のみという訳のわからない状態。表示部分のソースコードはすべてfunction化してるため、どっかミスってるという訳でもない。

あと念のため書いておくと、その他のget_field()の値は正しく表示されており、完全にこのタクソノミー型のみうまく取得ができていない。

試しにvar_dump()でget_field()の中身を覗いてみると、正しく表示されているページに関しては「オブジェクトの配列」が返ってきているのに対し、検索結果ページでは「タームID」が返ってきてる。

もう一度カスタムフィールドの設定値を見ても「オブジェクト」が選択されてるし、他に特別な記述はどこにも書いてない…。

個人的にはACFの不具合では?と思っていますが、もし原因に心当たりがある方がいらっしゃったら是非ともコメントに書いて貰えると有難いです。

解決方法

とりあえず調べても解決策が見当たらなかったので、「タームID」を使った取得方法へ変更することにしました。根本的な解決策じゃなくてスミマセン。

<?php 
$term_id = get_field('設定したフィールド名');
if( $term_id ):
$term = get_term( $term_id, 'タクソノミー名' );
?>
<p><?php echo $term->name; ?></p>
<?php endif; ?>

これで無事検索結果もその他ページもうまく取得することができました。「タームオブジェクト」でうまく取得が出来なくてお困りの方がいたらお試しください!

この記事を書いた人

ろあんぬ

サイトの制作担当。主にアビスリウム・WEB制作関連の記事を書いています。最近はラグナロクマスターズにハマっています。ほぼブログの更新つぶやきになってるけど一応Twitterもやってます。話しかけてもらえたら反応します!(@roanne_mohulog)

スポンサーリンク

関連記事

コメントを書く

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。

PageTop