web-dev-qa-db-de.com

Wie schneide ich ein Array mit posts_per_page?

Der folgende Code zeigt alle Bilder der WP-Galerie mit all ihren Größen, aber es ist nicht so, was ich will.

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;
    }
}

Das zurückgegebene Array sieht folgendermaßen aus:

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

Aber wenn ich 'posts_per_page' => 1 einstelle, sieht es so aus

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

Aber ich möchte Ausgabe wie unten.

 [0] => thumbnail-url,

Wenn ich 'posts_per_page' => 2 einstelle, sieht es so aus

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

Wie ich bereits in Ihrer vorherigen Frage erwähnt habe, hilft es Ihnen nicht, den Beitrag pro Seite festzulegen. Es gibt jedoch eine Problemumgehung.

Verwenden Sie eine Variable, und ändern Sie das, anstatt den Beitrag pro Seite direkt festzulegen. Verwenden Sie dann dieselbe Variable, um das Array aufzuteilen. Zum Beispiel:

$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