web-dev-qa-db-fra.com

Obtenir l'URL de l'image au lieu de l'ID de pièce jointe dans l'API Reste

Je souhaite afficher les publications récentes dans mon application Android et je poursuis en justice ce point d'extrémité pour obtenir la liste des publications https://www.geekdashboard.com/wp-json/wp/v2/posts

Comment puis-je obtenir l'URL complète de l'image sélectionnée au lieu de son identifiant?

"featured_media": 39913,

Je ne veux pas utiliser de plug-ins et est-il possible d'utiliser functions.php?

2
Amar Ilindra

Vous pouvez modifier REST les réponses à l'API dans themes functions.php comme ceci.

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

Si vous ne pouvez pas modifier la réponse de l'API REST, vous pouvez demander les informations sur le média comme ceci: curl http://your-site.com/wp-json/wp/v2/media/<id>

2
ville6000

en modifiant @ ville6000 par exemple, j'ai pu résoudre mon propre problème,

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

Ajouter aux thèmes functions.php Happy Coding ...

0
The Dead Guy