サポート » プラグイン » ACFでカテゴリに画像のカスタムフィールドを追加する

  • 初めて投稿させていただきます。

    サイドメニューに、ACFでカテゴリに画像のカスタムフィールドを追加して、
    画像を表示し、且つカテゴリ一覧へリンクを貼れるようにしたいです(子カテゴリ含む)。

    また、カテゴリの編集より、画像をアップロードしたものだけ表示したいのです。

    検索して見つけようと思ったのですが、うまく検索で引っかからず困り果てたので教えていただければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 画像のカスタムフィールドをcatthumbとしている前提で、次のようにして画像を表示できました。
    出力部分は調整ください。

    <?php
      $cats = get_categories();
      foreach ( $cats as $cat ) {
        $catthumb = get_field( 'catthumb', $cat );
        if ( ! empty( $catthumb ) ){
          $link = get_category_link( $cat->term_id );
          echo sprintf( '<p><a href="%s"><img src="%s" />%s</a></p>',$link , $catthumb['url'], $cat->name );
        }
      }
    ?>

    以下、参考ページです。

    https://wpdocs.osdn.jp/関数リファレンス/get_categories

    https://www.advancedcustomfields.com/resources/get-values-from-a-taxonomy-term/

    こんな感じで実装させています。
    参考になりますでしょうか?

    
    <?php
    //初期設定
    $tax = 'かすたむたくそのみー';
    $post_type_slug = '投稿タイプ';
    
    // タクソノミーにはデフォルト値がないので下記を例として使う。
    $taxonomies = array( 
        $tax,
    );
    $args = array(
    /*
        'orderby'       => 'id',//id,count,name - デフォルト,slug,term_group - 実装が充分ではない(利用を避けること),none
        'order'         => 'ASC',//ASC - デフォルト(昇順),DESC(降順)
    */
        //'orderby'       => 'order-num',//id,count,name - デフォルト,slug,term_group - 実装が充分ではない(利用を避けること),none
    	'meta_key'		=> 'order-num',
    	'meta_value'	=> '1',
    	'orderby'		=> 'term_order',//プラグイン「taxonomy-terms-order」を使用時
        'order'         => 'ASC',//ASC - デフォルト(昇順),DESC(降順)   
    	
    	'hide_empty'    => true, //空タームを表示させない true or false
        //'exclude'       => array(559), //除外タームID
        'exclude_tree'  => array(), //除外親ID
        'include'       => array(),//指定IDのみ表示(空の場合は全部表示)
        'number'        => '', //表示するタームの数
        'fields'        => 'all', 
    	/*
    	all - タームオブジェクトの配列を返す - デフォルト
        ids - 整数(ターム ID)の配列を返す
        names - 文字列(ターム名)の配列を返す
        count - (バージョン 3.2 以上)見つかったタームの個数を返す
        id=>parent - 連想配列を返す。キーはターム ID、値は親タームの ID またはゼロ(親がない場合)
        id=>slug - 連想配列を返す。キーはターム ID、値はスラッグ
        id=>name - 連想配列を返す。キーはターム ID、値はターム名 
    	*/
        'slug'          => '', //表示させるslug
        'parent'        => '',
    	/*直近の子タームを返す(指定された値が親タームの ID であるタームのみ)。
    	ゼロを指定するとトップレベルのタームのみを返す。デフォルトは空文字列。
    	*/ 
        'hierarchical'  => true, //子タームを持たせるかどうか
    	/*
    	1 (true) - デフォルト
        0 (false) 
    	*/
        'child_of'      => 0, //指定したタームの子孫をすべて取得します。デフォルトは 0 です。
        'childless'     => false,
    	/*タクソノミーが階層有りの場合、子を持たないタームのみを返します。
    	階層無しの場合、すべてのタームを対象とします。
    	*/
        'get'           => '', //この値を 'all' にすると 'hide_empty' と 'child_of' が無効になります(すべてのタームを取得します)。 
        'name__like'    => '',//ターム名にマッチさせたい文字列。
        'description__like' => '',//タームの説明に 'description__like' の文字列を含む(大文字小文字を区別して)タームを返します
        'pad_counts'    => false,//true のとき、子孫タームすべてのカウント 
        'offset'        => '', //見つかったタームの先頭から指定の個数を読み飛ばして返します。必ず 'number' と一緒に使ってください。
        'search'        => '', //ターム名にマッチさせたい文字列。ターム名とスラッグに対して検索対象
        'cache_domain'  => 'core'
    	
    	//'meta_value'	=> array('pickup' , 'now', 'campaign' ,'popular'),//カスタムフィールドの値
    ); 
    
    $terms = get_terms( $taxonomies, $args );
    
    //$mycats = get_terms('sozaicat','hide_empty=0&parent=0');//取得したいタクソノミーを設定
    $post_type = $post_type_slug;
    foreach($terms as $mycat):
    //foreach($mycats as $mycat):
    $sec_count++;
    
    //各項目の取得定義
    //$terms = get_the_terms();
    $term_parent = $mycat -> parent;
    $term_id = $mycat -> term_id;
    $term_slug = $mycat -> slug;
    $term_desc = $mycat -> description;
    $cat_link = esc_url(get_term_link($mycat -> slug, $mycat -> taxonomy));
    
    $term_idsp = $tax.'_'.$term_id; //カスタムフィールドを取得するのに必要なtermのIDは「taxonomyname_ + termID」
    
    $term_img_id = get_field('last-term-img-1',$term_idsp);
    $img_size = 'full';
    $term_img = wp_get_attachment_image_src($term_img_id,$img_size );
    $term_img_url = esc_url($term_img[0]);
    ?>
    
    <!-- 表示したい内容  -->
    <a><img src="<?php echo $term_img_url ?>" alt="" /></a>
    
    <?php endforeach; ?>
    
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ACFでカテゴリに画像のカスタムフィールドを追加する」には新たに返信することはできません。