Obține URL-ul imaginii în loc de ID-ul atașamentului în Rest API

27 iun. 2017, 10:37:36
Vizualizări: 22.4K
Voturi: 8

Vreau să afișez articolele recente în aplicația mea Android și folosesc acest endpoint pentru a obține lista de articole https://www.geekdashboard.com/wp-json/wp/v2/posts

Cum pot obține URL-ul complet al imaginii featured în loc de id-ul acesteia?

"featured_media": 39913,

Nu vreau să folosesc niciun plugin și este posibil să fac acest lucru folosind functions.php?

1
Comentarii

poți obține link-ul URL al media featured adăugând "_embed" la sfârșitul URL-ului de bază pe care îl folosești pentru a obține postarea. Sau poți folosi "&_embed" dacă există alt filtru pentru URL-ul de bază.

saed saed
27 mar. 2019 16:00:39
Toate răspunsurile la întrebare 2
2

Puteți modifica răspunsurile API REST în functions.php al temei astfel:

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,
    );
}

Dacă nu puteți modifica răspunsul API REST, puteți solicita informațiile despre media astfel: curl http://siteul-dvs.com/wp-json/wp/v2/media/<id>

27 iun. 2017 11:57:25
Comentarii

Ar trebui să fie register_rest_field în loc de register_api_field. Acesta a fost eliminat în versiunea 2. După ce l-am schimbat în register_rest_field, codul tău a funcționat. Am editat răspunsul tău. Te rog să-l accepți.

Amar Ilindra Amar Ilindra
1 iul. 2017 16:57:55

Noul plugin are http://mahditajik.ir/wp-json/wp/v2/media/<id> dar conține multe date suplimentare care încetinesc răspunsul, așa că cum pot personaliza răspunsul API-ului REST?

Mahdi Mahdi
11 apr. 2018 18:19:20
0

Modificând exemplul lui @ville6000, am reușit să rezolv propria mea problemă,

    add_action( 'rest_api_init', 'ws_register_images_field' );
function ws_register_images_field() {
    register_rest_field( 
        'post', //numele custom post type
        'attachment_url_images', //numele array-ului la alegere
        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);
}

Adăugați în functions.php al temei Programare fericită...

4 nov. 2018 19:14:30