web-dev-qa-db-ja.com

Rest APIで添付IDの代わりに画像のURLを取得する

私は自分のAndroidアプリケーションに最近の投稿を表示したいのですが、投稿のリストを取得するためにこのエンドポイントを訴えています https://www.geekdashboard.com/wp-json/wp/v2/posts

IDの代わりにおすすめの画像の完全なURLを取得するにはどうすればよいですか。

"featured_media": 39913,

私はプラグインを使用したくありません、それはfunctions.phpを使用してそれに可能ですか?

2
Amar Ilindra

テーマfunctions.phpでREST AP​​Iレスポンスをこのように修正することができます。

function ws_register_images_field() {
    register_rest_field( 
        'post',
        'images',
        array(
            'get_callback'    => 'ws_get_images_urls',
            'update_callback' => null,
            'schema'          => null,
        )
    );
}

add_action( 'rest_api_init', 'ws_register_images_field' );

function ws_get_images_urls( $object, $field_name, $request ) {
    $medium = wp_get_attachment_image_src( get_post_thumbnail_id( $object->id ), 'medium' );
    $medium_url = $medium['0'];

    $large = wp_get_attachment_image_src( get_post_thumbnail_id( $object->id ), 'large' );
    $large_url = $large['0'];

    return array(
        'medium' => $medium_url,
        'large'  => $large_url,
    );
}

REST AP​​Iレスポンスを変更できない場合は、このようなメディア情報をリクエストできますcurl http://your-site.com/wp-json/wp/v2/media/<id>

2
ville6000

@ ville6000の例を修正すると、私は自分自身の問題を解決することができました、

    add_action( 'rest_api_init', 'ws_register_images_field' );
function ws_register_images_field() {
    register_rest_field( 
        'post', //custom post name
        'attachment_url_images', //array name of your choice
        array(
            'get_callback'    => 'ws_get_images_urls',
            'update_callback' => null,
            'schema'          => null,
        )
    );
}


function ws_get_images_urls( $object, $field_name, $request ) {

  $custom_fields = get_post_custom($object['id']);
  $main_image = $custom_fields['your_custom_images_array_name'];
  $image_urls = array();

  foreach ( $main_image as $key => $value ) {
      $imagesID = explode(',' ,$value);
      foreach ($imagesID as $id => $value) {
        $image_urls[ $key ] = wp_get_attachment_url($value);
        //$custom_fields[ $id ] = $image_urls;
      }
  };

     return $image_urls;
   //return count($main_image);
}

テーマに追加functions.phpハッピーコーディング...

0
The Dead Guy