根本的な質問なんですが、
貼られたコードは、プラグイン Advanced Custom Fields を導入し、カテゴリーにカスタムフィールドを設け、それを使用する場合のコードですが、Advanced Custom Fields は入れてありますか?
あと、当たり前のような質問で申し訳ないんですが、コード内の「フィールド名」というのは設置したフィールドの名前に置き換えてますか?
それと、
<?php
$cat_id = get_queried_object()->cat_ID;
$post_id = 'category_'.$cat_id;
?>
↑これは Advanced Custom Fields でカテゴリーに設置したカスタムフィールドを取得する場合のコードなので、これはこのまま使います。
‘category_10’ や ’10’ にする必要はありません。
taku-kさん、回答ありがとうございます!!
根本的な事抜けておりました><
おっしゃる通り、Advanced Custom Fieldsを導入しております。
「フィールド名」は置き換えております。
<?php
$cat_id = get_queried_object()->cat_ID;
$post_id = 'category_'.$cat_id;
?>
上記のコードでcategry_はそのまま使用するとのことですが、それでは、カテゴリ別に
そのフィールドを読み込ませることはできないのでしょうか??
カテゴリA カスタムフィールド(ラジオボタンでon/offを選択)
カテゴリB カスタムフィールド(ラジオボタンでon/offを選択)
カテゴリC カスタムフィールド(ラジオボタンでon/offを選択)
としており、それぞれのカテゴリで選択したonかoffを
<a href="#book" class="btn<?php the_field('フィールド名',$post_id); ?>">5月発売本</a>
この箇所に当てはめ、cssのクラスを制御したいのですが、、説明が下手で申し訳ありません!
すみません、もう1つ書き忘れておりました。
表示させたい場所は、固定ページテンプレートです。
上記コードはテーマの category.php に貼るものなので、カテゴリーアーカイブのページが読み込まれた時に使用します。
たとえば、
1.Advanced Custom Fields でカテゴリーにカスタムフィールドを設置。
2.カテゴリーアーカイブページを表示する時に、そのカスタムフィールドを使用して何かを表示する。
といった使い方です。
「ラジオボタンでon/offを選択」というところですが、「カテゴリーの編集」画面でon/offを選択しているということですか?
taku-kさん、度々ありがとうございます!
そもそものやりたいことは、
1.固定ページにカテゴリ一覧を表示させる
2.同ページ最上部に各カテゴリへのページ内リンクを貼る
ということで、その一覧ページに表示させたくないカテゴリもあるため、
archive.phpなどを使用できない、と思い固定ページにしました。
それで、「2.同ページ最上部に各カテゴリへのページ内リンクを貼る」というところで
投稿があるカテゴリと、投稿が1つもないカテゴリの色をカスタムフィールドの値+cssで
(btn_on と btn_off というcssを作って、class=”btn_○○” ○○のところにカテゴリに指定したカスタムフィールドのonかoffを表示させcssを制御したい)
のですが、、他に何かいい方法はありますでしょうか??
>>「ラジオボタンでon/offを選択」というところですが、「カテゴリーの編集」画面でon/offを選択しているということですか?
仰る通りです!
beeestyさんが最初に書いたコードを固定ページで表示させたいのでしたら
<a href="#book" class="btn_<?php the_field('フィールド名','category_10'); ?>">5月発売本</a>
これで カテゴリーIDが10のラジオボタンのon/offが表示されるとは思います。
手動でカテゴリーリストを表示しているという前提ですが。
今後、投稿なしのカテゴリーが「あり」になったりした時の事を考えると、
Advanced Custom Fields を使わず get_terms でカテゴリー一覧を取得して(除外はexcludeで出来ます)、投稿数(count)で条件分岐する方法も良いかもしれませんね。
Advanced Custom Fields を使わず get_terms でカテゴリー一覧を取得して(除外はexcludeで出来ます)、投稿数(count)で条件分岐する方法も良いかもしれませんね。
get_terms時に渡すパラメーターで投稿のないカテゴリーは制御できます
(デフォルトで投稿のないカテゴリーは含まれません)
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_terms
内容が
「投稿の無いカテゴリー」を除外する
のではなくて
1.任意のカテゴリーを表示しない(投稿の有無を問わず)
2.表示はするけど投稿は無い
3.表示はするし投稿もある
この3種類に分けるものと考えまして countで制御するものかと思ったもので。
taku-kさん、gatespaceさん、ありがとうございます!
すみません、高度すぎてお二人のやり取りについていけておりませんが。。。
まず、
<a href="#book" class="btn_<?php the_field('フィールド名','category_10'); ?>">5月発売本</a>
これではダメでした。。
<?php the_field(‘フィールド名’,’category_10′); ?>
ソースを見てもこの部分が全く出力されておりませんでした。
んー
考えられるのは
フィールド名が違う
ID が違う
ラジオボタンじゃなくて 真/偽 とか
あ、きました!アンダーバーが抜けていただけでした。すみません><
本当は、カテゴリのカスタムフィールドでon/offではなく、投稿のないカテゴリは自動的にクラスをoffに振りたいのですが、そんなことは無理ですよね??;
お二方が仰っております、
Advanced Custom Fields を使わず get_terms でカテゴリー一覧を取得して(除外はexcludeで出来ます)、投稿数(count)で条件分岐する方法も良いかもしれませんね。
こちらがもしかしてそうなのでしょうか??
投稿のありなしでカテゴリに対してクラスを付与するためだけであれば、Advanced Custom Fieldsいらないです。
まぁその上でですが、先にリンクしたCodexの例文改変のみで
<?php
$args = array( 'hide_empty=0' );
$terms = get_terms( 'category', $args );
$term_list = "";
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
foreach ($terms as $term ) {
$class = 'btn_off'; //基本はオフ
if ( ( $term->count > 0 ) && get_field( 'フィールド名', 'category_' . $term->term_id ) ) { //投稿があってかつACFでの入力があれば
$class = 'btn_' . get_field( 'フィールド名', 'category_' . $term->term_id );
}
//出力
echo '<a href="#book" class="' . $class . '">' . esc_html( $term->name). '</a>'; //カテゴリ名出す
}
}
gatespaceさん、ご丁寧にありがとうございます!!
このコードはどこに記述すればよろしいのでしょうか??
また、↓
<a href="#book" class="btn_<?php the_field('フィールド名','category_10'); ?>">5月発売本</a>
<?php the_field(‘フィールド名’,’category_10′); ?>
この部分はいらなくなるということでしょうか??
また、
>>投稿のありなしでカテゴリに対してクラスを付与するためだけであれば、Advanced Custom Fieldsいらないです。
ということですが、gatespaceさんにいただいたコードの中の
if ( ( $term->count > 0 ) && get_field( 'フィールド名', 'category_' . $term->term_id ) ) { //投稿があってかつACFでの入力があれば
こちらの中の’フィールド名’というのは??
すみません初心者でして分からない事ばかりです。