サポート » 使い方全般 » カテゴリに指定したカスタムフィールドの値の取得

  • PHP初心者です。
    他サイトより、

    <?php
    $cat_id = get_queried_object()->cat_ID;
    $post_id = 'category_'.$cat_id;
    ?>
    <?php the_field('フィールド名',$post_id); ?>

    こちらの記述を見つけたのですが、これを入れてもサイトが真っ白になってしまいます。
    サイトが真っ白になる原因は閉じタグかなと思うのですが、上記の記述の場合のPHPの閉じタグはどのようにしたらよいのでしょうか?

    また、
    $post_id = ‘category_’.$cat_id;
    この
    ‘category_’
    の部分にカテゴリIDを入力するとき、
    ‘category_10’
    とすれば良いのか、
    ’10’
    とすれば良いのかどちらが正しいのでしょうか。

    現在のhtmlを貼っておきます。どなたかご教授下さい。

    <?php
    $cat_id = get_queried_object()->cat_ID;
    $post_id = 'category_10'.$cat_id;
    ?><a href="#book" class="btn<?php the_field('フィールド名',$post_id); ?>">5月発売本</a>

    (クラス名のところにカテゴリに指定したフィールドを取得して読み込ませたいです)

15件の返信を表示中 - 1 - 15件目 (全22件中)
  • 根本的な質問なんですが、

    貼られたコードは、プラグイン 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’ にする必要はありません。

    トピック投稿者 beeesty

    (@beeesty)

    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のクラスを制御したいのですが、、説明が下手で申し訳ありません!

    トピック投稿者 beeesty

    (@beeesty)

    すみません、もう1つ書き忘れておりました。
    表示させたい場所は、固定ページテンプレートです。

    上記コードはテーマの category.php に貼るものなので、カテゴリーアーカイブのページが読み込まれた時に使用します。

    たとえば、
    1.Advanced Custom Fields でカテゴリーにカスタムフィールドを設置。
    2.カテゴリーアーカイブページを表示する時に、そのカスタムフィールドを使用して何かを表示する。

    といった使い方です。

    「ラジオボタンでon/offを選択」というところですが、「カテゴリーの編集」画面でon/offを選択しているということですか?

    トピック投稿者 beeesty

    (@beeesty)

    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)で条件分岐する方法も良いかもしれませんね。

    モデレーター gatespace

    (@gatespace)

    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で制御するものかと思ったもので。

    トピック投稿者 beeesty

    (@beeesty)

    taku-kさん、gatespaceさん、ありがとうございます!

    すみません、高度すぎてお二人のやり取りについていけておりませんが。。。

    まず、

    <a href="#book" class="btn_<?php the_field('フィールド名','category_10'); ?>">5月発売本</a>

    これではダメでした。。
    <?php the_field(‘フィールド名’,’category_10′); ?>
    ソースを見てもこの部分が全く出力されておりませんでした。

    んー
    考えられるのは

    フィールド名が違う
    ID が違う
    ラジオボタンじゃなくて 真/偽 とか

    トピック投稿者 beeesty

    (@beeesty)

    あ、きました!アンダーバーが抜けていただけでした。すみません><

    本当は、カテゴリのカスタムフィールドでon/offではなく、投稿のないカテゴリは自動的にクラスをoffに振りたいのですが、そんなことは無理ですよね??;

    お二方が仰っております、

    Advanced Custom Fields を使わず get_terms でカテゴリー一覧を取得して(除外はexcludeで出来ます)、投稿数(count)で条件分岐する方法も良いかもしれませんね。

    こちらがもしかしてそうなのでしょうか??

    モデレーター gatespace

    (@gatespace)

    投稿のありなしでカテゴリに対してクラスを付与するためだけであれば、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>'; //カテゴリ名出す
        }
    }

    トピック投稿者 beeesty

    (@beeesty)

    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での入力があれば

    こちらの中の’フィールド名’というのは??

    すみません初心者でして分からない事ばかりです。

15件の返信を表示中 - 1 - 15件目 (全22件中)
  • トピック「カテゴリに指定したカスタムフィールドの値の取得」には新たに返信することはできません。