添付画像の画像IDを投稿に取り込もうとしています。ここに掲載されている例 を使用しています が、配列全体ではなくIDだけを返すことができません。
私の目標は、添付画像のIDのコンマ区切りリストを返すことです。
1, 2, 3, 4, 5
これが私の機能です:
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;
}
上記のコードすべてではなく、このワンライナーをループ内で試すことができます。
$ids = join( ',', wp_list_pluck( get_attached_media('image' ), 'ID' ) );
ここで get_attached_media()
の出力からIDを取り出します。
もう1つの方法は、次のものを使用することです。
$ids = join( ',', get_attached_media( '_image_ids' ) );
次のプラグインを使用してサポートされている、新しい入力パラメータ_image_ids
を導入しました。
/**
* 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 );