kevin
  • 0
Учитель

Как добавить случайное изображение в публикацию из галереи и показать только одно?

  • 0

Я знаю, как добавить изображение и галерею. Мне нужно, чтобы одно изображение из камбуза отображалось на странице случайным образом каждый раз, когда страница загружается.

На странице должно отображаться только одно изображение за раз.

Есть ли плагин или короткий код для этого? Я знаю, как сделать галерею случайной, но они показывают все изображения.

Ответ :

$args = array( 
                'post_type' => 'attachment',
                'numberposts' => 1,
                'orderby' => 'rand',
                'post_status' => null,
                'post_parent' => get_the_ID(),
                'post_mime_type'  => 'image'
            ); 
            have_posts(); //must be in the loop
            the_post(); //set the ID

            $images = get_children( $args );            

            if ($images) {
            foreach ( $images as $attachment_id => $attachment ) {
                    echo wp_get_attachment_image( $attachment_id, 'full' );
                }
            }
            wp_reset_query();
Share
  1. Вы должны использовать 'orderby' => 'rand' параметр для get_children() функции вложений.

    Например:

    $images = get_children( array(
        'orderby'        => 'rand',       // this is random param
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'post_parent'    => get_the_ID(),
    );
    
    • 0
  2. Вы также можете получить идентификаторы из ВСЕХ галерей на странице get_post_galleries() , и вам не нужен дополнительный цикл.

    // pull all the images from all galleries as unique IDs
    $images = array_unique( explode( ",", implode( ",", wp_list_pluck( get_post_galleries( get_the_ID(), false ), 'ids' ) ) ) );
    
    // randomize the order
    shuffle( $images );
    
    // pull the first id
    list ( $id ) = $images;
    
    // convert to image
    echo wp_get_attachment_image( $id, 'full' );
    

    Ссылка

    • 0

Оставить ответ

You must login to add an answer.