Получить идентификаторы вложений в wordpress, разделенные запятыми текущего сообщения - PullRequest
0 голосов
/ 01 апреля 2020

Я создал пользовательский тип записи с именем «Person», и мне нужно получить все идентификаторы вложений, разделенные запятыми текущего сообщения в l oop.

Здесь у меня есть код, который зацикливает «person» посты типа и код, который показывает все идентификаторы вложений постов, но дело в том, что эти идентификаторы возвращаются так: «2713271227112710», мне нужно, чтобы они возвращались через запятую вроде «2713,2712,2711,2710»

Вот мой код:

<?php 
$args = array(  
    'post_type' => 'person',
    'post_status' => 'publish',
    'posts_per_page' => 24,  
    'order' => 'ASC'
);
$loop = new WP_Query( $args ); 

while ( $loop->have_posts() ) : $loop->the_post();  ?>
    <div class="col-md-4">
    <div class="person">

    <?php if ( $post->post_type == 'person' && $post->post_status == 'publish' ) {
    $attachments = get_posts( array(
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'post_parent' => $post->ID,
        'exclude'     => get_post_thumbnail_id()
    ) ); ?>

     <?php
    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
            $thumbimg = wp_get_attachment_url( $attachment->ID, 'full', false );
            $attachment_id = attachment_url_to_postid( $thumbimg );

            echo $attachment_id; //here outputs the attachemnts ID's of current post
        }

    }
}
?>

<?php echo do_shortcode( '[vc_images_carousel images="'.$attachment_id.'" img_size="large" speed="3000" autoplay="yes" hide_pagination_control="yes" hide_prev_next_buttons="yes" wrap="yes"]' ); ?>
<h3><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
</div>
<?php  endwhile;
wp_reset_postdata();  ?>

1 Ответ

1 голос
/ 01 апреля 2020

Используйте implode в сочетании с array_map, чтобы вернуть массив идентификаторов, а затем преобразовать его в строку идентификаторов, разделенных запятой.

Итак, вместо этого:

 foreach ( $attachments as $attachment ) {
            $thumbimg = wp_get_attachment_url( $attachment->ID, 'full', false );
            $attachment_id = attachment_url_to_postid( $thumbimg );

            echo $attachment_id; //here outputs the attachemnts ID's of current post
        }

Попробуйте это:

 $attachment_ids = implode(',', array_map(function($attachment){

          return $attachment->ID;

    }, $attachments)); 

echo $attachment_ids;

...