J'essaie de saisir l'identifiant des images attachées à un message. J'utilise un exemple posté ici , mais je ne parviens pas à renvoyer les identifiants uniquement et non l'ensemble du tableau.
Mon objectif est de renvoyer une liste d'identifiants d'images attachées, séparés par des virgules.
1, 2, 3, 4, 5
Voici ma fonction:
function wpse_get_images() {
global $post;
$id = intval( $post->ID );
$size = 'medium';
$attachments = get_children( array(
'post_parent' => $id,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order'
) );
if ( empty( $attachments ) )
return '';
$output = "\n";
/**
* Loop through each attachment
*/
foreach ( $attachments as $id => $attachment ) :
$title = esc_html( $attachment->post_title, 1 );
$img = wp_get_attachment_image_src( $id, $size );
$imgID = wp_get_attachment_metadata( $attachment_id );
$imgID = (string)$imgID;
$output .= $imgID->$attachment_id.', '; // prints: 1,2,3,4,5,6,8,9,
endforeach;
return $output;
}
Vous pouvez essayer ce one-liner, dans la boucle, au lieu de tout votre code ci-dessus:
$ids = join( ',', wp_list_pluck( get_attached_media('image' ), 'ID' ) );
où nous extrayons les identifiants de la sortie get_attached_media()
.
Une autre approche serait d'utiliser:
$ids = join( ',', get_attached_media( '_image_ids' ) );
où nous avons introduit un nouveau paramètre d'entrée _image_ids
, supporté par l'utilisation du plugin suivant:
/**
* Plugin Name: Enhance the get_attached_media() function.
* Description: Support for the custom '_image_ids' parameter.
* Plugin URI: http://wordpress.stackexchange.com/a/169152/26350
* Author: birgire
* Version: 0.0.1
*/
add_filter( 'get_attached_media_args', function( $args, $type, $post ) {
if( '_image_ids' === $type )
{
$args['post_mime_type'] = 'image';
$args['fields'] = 'ids';
}
return $args;
}, 10, 3 );