サポート » プラグイン » Advanced Custom Fieldsを使用したブログ管理機能の作り方

  • 解決済 wtakop

    (@wtakop)


    某サイトをで見つけたAdvanced Custom Fieldsを使用したバナー管理機能に挑戦してみましたが、バナー投稿IDを入力して表示させるものだったので、都度投稿できるものが反映出来るよう改良を試みましたが、うまくいきませんでした。知識、勉強不足の為すみませんがおわかりの方がいらっしゃったらご教授お願いいたします。

    fanction.php 内
    ------------------------------------
    /**
    * バナー管理機能を使用可能にする
    */
    $args = array(
        'label' => 'バナー',//投稿タイプの名前
        'labels' => array(
            'singular_name' => 'バナー',//投稿タイプの名前
            'menu_name' => 'バナー',//メニュー(画面の左)に表示するラベル
            'add_new_item' => '新規投稿を追加',//新規作成ページの左上に表示されるタイトル
            'add_new' => '新規追加',//メニュー(画面の左)の「新規」の位置に表示するラベル
            'new_item' => '新規投稿',//一覧ページの右上にある新規作成ボタンのラベル
            'edit_item'=>'投稿を編集',//編集ページの左上にあるタイトル
            'view_item' => '投稿を表示',//編集ページの「○○を表示」ボタンのラベル
            'not_found' => '投稿は見つかりませんでした',//カスタム投稿を追加していない状態で、カスタム投稿一覧ページを開いたときに表示されるメッセージ
            'not_found_in_trash' => 'ゴミ箱に投稿はありません。',//カスタム投稿をゴミ箱に入れていない状態で、カスタム投稿のゴミ箱ページを開いたときに表示されるメッセージ
            'search_items' => '投稿を検索',//一覧ページの検索ボタンのラベル
        ),
    
        'public' => true,//ユーザーが管理画面で入力するか設定
        'publicly_queryable' => true,//カスタム投稿タイプの機能でページを生成するかどうかを指定
        'show_ui' => true,//管理画面にこのカスタム投稿タイプのページを表示するか設定
        'show_in_menu' => true,//管理画面にメニュー出すか設定
        'query_var' => true,
        'has_archive' => true,//「true」に指定すると投稿した記事の一覧ページ(投稿タイプのトップページ)を作成することができる
        'hierarchical' => false,//カスタム投稿に固定ページのような親子関係(階層)を持たせるか設定
        'menu_position' => 5,//カスタム投稿のメニューを追加する位置を整数で指定
        'rewrite' => true,//リライト設定
    );
    register_post_type("banner",$args);
    /**
    * バナー管理機能をカスタム
    */
    add_theme_support( 'post-thumbnails' );
    add_image_size( 'banner', 350, 130, true);  // アイキャッチサイズ指定
    バナーパーツ部分 banner.php
    現状はバナー投稿のタイトルのみ表示です。
    $post_idがfieldと結びつかなければならないと思いますがお手上げです。
    -------------------------------------
    <?php
    if(have_posts()): while(have_posts()): the_post();
    $post_id = get_the_ID();
    $image_id = get_field("banner_image",$post_id);
    $image = wp_get_attachment_image_src($image_id,"banner");
    $file = get_field('url',$post_id);
    ?>
    <li><a href="<?php echo $file; ?>"><img class='img-responsive' src="<?php echo $image[0]; ?>" alt="<?php the_title(); ?>" /></a></li>
    <?php
    endwhile;endif;
    ?>

    Advanced Custom Fields内
    フィールド順序
    1 画像 フィールド名banner_image フィールドタイプ画像 返り値画像ID
    Show this field group if
    投稿タイプ 等しい banner
    2 URL フィールド名url フィールドタイプテキスト

    バナー投稿記事全部で3つ
    投稿idは仮に111,222,333とします。

    すみませんが宜しくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • taku-k

    (@taku-k)

    カスタムポスト「バナー」を設置して そこでバナーを管理するという方法なのでしょうか。

    実現したいことを もう少し詳しく教えて下さい。

    たとえば普通の「投稿記事」が

    • 投稿記事 ア
    • 投稿記事 イ
    • 投稿記事 ウ
    • 投稿記事 エ
    • 投稿記事 オ

    とあったとして

    カスタムポストを設置してそこで管理するバナー

    • バナー A
    • バナー B
    • バナー C

    とします。

    「投稿記事 ア」にはかならず「バナー A」を表示させる
    「投稿記事 イ」にはかならず「バナー B」を表示させる
    「投稿記事 エ」にはかならず「バナー C」を表示させる

    ということなのでしょうか?

    バナーABCは他の記事で、どのように紐付けて表示させる予定なのでしょう?

    トピック投稿者 wtakop

    (@wtakop)

    taku-k様

    ありがとうございます。
    ————————————————-
    カスタムポスト「バナー」を設置して そこでバナーを管理するという方法なのでしょうか。
    ————————————————
    はい。カスタム投稿でクライアントさんがバナーを自由に更新できる機能をつけたいと思っていました。その投稿部分を呼び出し部品banner.phpをとし、様々なページで部品呼び出しをさせたいと思っています。

    現状はトップページに呼び出すのみで検討しております。
    もし良い方法がありましたらよろしくお願いいたします。

    呼び出す「バナー」は結局は「投稿(post)」なので、とりあえず呼び出してバナーとして表示するのであれば ループで出すしかないのではないかと思います。

    <?php
    $args = array  ('post_type' => 'banner');
    $the_query = get_posts( $args );
    global $post;
    foreach ( $the_query as $post ) : setup_postdata( $post );
    ?>
    
    <?php
    $image_id = get_field("banner_image",$post_id);
    $image = wp_get_attachment_image_src($image_id,"banner");
    ?>
    
    <li><a href="<?php the_field('url'); ?>"><img class='img-responsive' src="<?php echo $image[0]; ?>" alt="<?php the_title(); ?>" /></a></li>
    
    <?php
    endforeach;
    wp_reset_postdata();
    ?>

    私、質問の主旨を取り違えてますかね?

    トピック投稿者 wtakop

    (@wtakop)

    taku-k様

    今試してみたところ、思っていた感じで表示がされました。
    ずっと悩んでいた箇所でしたのでスッキリしました。
    php初心者なので一行一行の意味を検索して勉強してみます。

    Advanced Custom Fieldsで作ったもののフィールド名とカスタム投稿のIDを結びつける方法がわかっておらず苦戦しておりました。

    本当に助かりました。ありがとうございました。

    トピック投稿者 wtakop

    (@wtakop)

    問題が解決しましたのでトピックを示させていただきます。
    taku-k様ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「Advanced Custom Fieldsを使用したブログ管理機能の作り方」には新たに返信することはできません。