web-dev-qa-db-fra.com

Comment découper un tableau en utilisant posts_per_page?

Le code ci-dessous montre toutes les images de la galerie wp avec toutes ses tailles mais il n’aime pas ce que je veux.

function get_images_high_data() {

    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image/jpeg,image/jpg,image/png',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
        'orderby' => 'id',
        'order' => 'ASC'
    );

    // Get all the available thumbnail sizes
    $sizes = get_intermediate_image_sizes();

    // Query the attachments
    $query_images = new WP_Query( $args );

    $images = array();

    // Run a loop
    if ( $query_images->have_posts() ){

        while ($query_images->have_posts()){

            $query_images->the_post();

            // For each attachment size, store its URL in an array
            foreach ( $sizes as $key => $size ) {

                $thumbnails[$key] = wp_get_attachment_image_src( get_the_ID(), $size)[0];
            }

            $images = array_merge( $thumbnails , $images );
        }

        return $images;
    }
}

Le tableau retourné ressemblera à ceci:

[0] => thumbnail-url,
[1] => medium-url,
[2] => large-url,
[3] => thumbnail-url,
[4] => medium-url,
[5] => large-url,

Mais quand je mets 'posts_per_page' => 1 ça se voit comme ça

    [0] => thumbnail-url,
    [1] => medium-url,
    [2] => large-url,

Mais je veux une sortie comme ci-dessous.

 [0] => thumbnail-url,

Si je mets 'posts_per_page' => 2 ça se voit comme ça

 [1] => medium-url,
 [2] => large-url,
1
David Cring

Comme je l'ai déjà mentionné dans votre question précédente , régler le message par page ne vous aidera pas. Cependant, il existe une solution de contournement.

Au lieu de définir directement le post par page, utilisez une variable et modifiez-la. Ensuite, utilisez la même variable pour découper le tableau. Par exemple:

$per_page = 2;
// Use the $per_page value to set the posts per page
$args = array(
    'posts_per_page' => $per_page,
);
// The rest of your code here

    // Now, before returning the images, slice the array using
    // the variable we set before
    $images = array_slice($images, 0, $per_page);
    return $images;
2
Jack Johansson