web-dev-qa-db-ja.com

添付画像IDのカンマ区切りリストを作成する方法

添付画像の画像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;
}
1
Heather

上記のコードすべてではなく、このワンライナーをループ内で試すことができます。

$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 );
1
birgire