it-swarm-eu.dev

Jak přidat náhodný obrázek do příspěvku z galerie a zobrazit pouze jeden?

Vím, jak přidat obrázek a galerii. Musím mít jeden obrázek z lodní show na stránce náhodně při každém načtení stránky.

Stránka by měla zobrazovat pouze jeden obrázek najednou.

Je k dispozici plugin nebo krátký kód? Vím, jak udělat náhodnou galerii, ale ukazují všechny obrázky.

Odpověď :

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

Měli byste použít parametr 'orderby' => 'Rand' pro funkci get_children() .

Například:

$images = get_children( array(
    'orderby'        => 'Rand',       // this is random param
    'post_type'      => 'attachment',
    'post_mime_type' => 'image',
    'post_parent'    => get_the_ID(),
);
3
Wyck

ID můžete také vytáhnout z VŠECH galerií na stránce pomocí get_post_galleries() a nepotřebujete další smyčku.

// 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' );

Odkaz

1
jgraup

Tento kód odpovídá na otázku. Na stránce nebo příspěvku, který obsahuje galerii, bude mít jeden obrázek z galerie a zobrazit pouze tento obrázek. To jde uvnitř wordpress smyčky (kód tady vlastně zahrnuje smyčku).

<?php //start the loop ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

            <?php // get the post's gallery ?>
            <?php if ( get_post_gallery() ) : $gallery = get_post_gallery( get_the_ID(), false ); ?>

                <?php //get gallery picture ids string seperates the ids and puts them in an array. ?>
                <?php $pic_ids = explode(",", $gallery['ids']);?>

                <?php // set a random int < to the size of the array containing ids.?> 
                <?php $i=Rand(0, count($pic_ids)-1);?>

                    <?php //get image corresponding to the random id?>
                    <?php echo wp_get_attachment_image( $pic_ids[$i],'full', false, '' ); ?>
                <?php endif; ?>
        <?php endwhile; else : ?>

            <p><?php _e( 'Sorry, no page found.' ); ?></p>

        <?php endif; ?>
0