サポート » 使い方全般 » REST APIでカスタムフィールドで設定した画像・ファイルを取得したい。

  • 解決済 minoritydog

    (@minoritydog)


    Aサイトで設定したカスタム投稿タイプの一覧を
    Bサイトにも表示するためにREST APIを使っています。

    投稿の各項目にはSmart Custom Fieldsを使用。
    現状では設定したテキストやアイキャッチ画像は表示できました。
    Smart Custom Fieldsで設定した画像やファイル(PDF)の取得をしたいのですが画像IDしか表示できません。

    Aサイトfunctions.phpで設定した内容

    
    add_action( 'rest_api_init',  function() {
    register_rest_field(
    'event',        // post type
    'post_meta',   // rest-apiに追加するキー
    array(
    'get_callback'  => function(  $object, $field_name, $request  ) {
    // 出力したいカスタムフィールドのキーをここで定義
    $meta_fields = array(
    'lead',
    'photo01',
    'pdf01',
    '***',
    );
    $meta = array();
    foreach ( $meta_fields as $field ) {
    $meta[ $field ] = get_post_meta( $object[ 'id' ], $field, true );
    }
    return $meta;
    },
    'update_callback' => null,
    'schema'          => null,
    )
    );
    } );
    

    Bサイトでの設定内容

    
    <?php
    $url = "http://www.demo.jp/wp-json/wp/v2/event?per_page=10&_embed";
    $json = file_get_contents($url);
    $arr = json_decode($json,true);
    ?>
    <ul>
    <?php
    foreach ($arr as $data):
    $title = $data["title"]["rendered"];
    $date = date('Y年n月j日', strtotime($data["date"]));
    $link = $data["link"];
    $thum = $data["_embedded"]["wp:featuredmedia"][0]["media_details"]["sizes"]["medium"]["source_url"];
    $lead = $data["post_meta"]["lead"];
    $photo01 = $data["post_meta"]["photo01"];
    $pdf01 = $data["post_meta"]["pdf01"];
    ?>
    <li>
    <p><img src="<?php echo $thum; ?>"></p>
    <p><a href="<?php echo $pdf01; ?>" target="_blank"><img src="<?php echo $photo01; ?>"></a></p>
    <p><?php echo $lead; ?></p>
    </li>
    <?php endforeach; ?>
    </ul>
    

    上記内容のphoto01やpdf01を表示するにはどうすればよいのかご教授いただけると助かります。
    色々と検索してみたのですがどうしても解決策にたどり着けませんでした。
    上記コードも公開していただいているものを参考にしております。
    どうぞよろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • $meta[ $field ]の中身が添付ファイルのIDならば

    foreach ( $meta_fields as $field ) {
    $meta[ $field ] = get_post_meta( $object[ 'id' ], $field, true );
    $meta[ $field ] = wp_get_attachment_url( $meta[ $field ] );
    }

    このようにしてURLを返してやる必要があるのではないですか?

    トピック投稿者 minoritydog

    (@minoritydog)

    ご連絡ありがとうございます。

    画像・PDFファイル表示されました。
    本当に助かりました。ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「REST APIでカスタムフィールドで設定した画像・ファイルを取得したい。」には新たに返信することはできません。