it-swarm.com.de

Problem: wp_query gibt alle Bilder vor Ort aus

Ich habe Probleme mit einer Abfrage. Ich möchte die Bilder an einen einzelnen Beitrag des Typs Verleih anhängen.

Meine Abfrage ist fehlerhaft, da alle Bilder auf der gesamten Website ausgegeben werden:

$image_query = new WP_Query( 
    array( 
        'post_type' => 'attachment', 
        'post_status' => 'inherit', 
        'post_mime_type' => 'image', 
        'posts_per_page' => -1, 
        'post_parent' => $rental->post->ID,
        'order' => 'DESC' 
    ) 
);

if( $image_query->have_posts() ){
 while( $image_query->have_posts() ) {
     $image_query->the_post();
     $imgurl = wp_get_attachment_url( get_the_ID() );
     echo '<div class="item">';
     echo '<img src="'.$imgurl.'">';
     echo '</div>';
 }

 wp_reset_postdata();

}

Irgendwelche Ideen, wie ich dies anpassen kann, um nur die Bilder an den aktuellen Beitrag anzuhängen?

1
warm__tape

Ihr Problem ist der Parameter post_parent. Wenn dieser Wert auf 0 oder auf einen falschen Wert wie null festgelegt ist, gibt Ihre Abfrage alle Beiträge der obersten Ebene zurück.

Sie müssen also nur sicherstellen, dass $ rental-> post-> ID einen Wert hat, oder einen anderen Ansatz wie die Funktion get_the_ID() verwenden.

Kann dir nicht wirklich mehr sagen, da du den Teil, in dem du $rental gesetzt hast, nicht eingeschlossen hast

$image_query = new WP_Query( 
    array(
        'post_type' => 'attachment',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
        'post_parent' => get_the_ID(), // your issue here lays
    )
);

Weitere Informationen finden Sie in den Dokumenten: https://developer.wordpress.org/reference/classes/wp_query/#post-page-parameters

0
ngearing

Ja, das hat geholfen. Mir ist aufgefallen, dass die Funktion bei einem Standardpost einwandfrei funktioniert. Im Grunde habe ich die Funktion in functions.php verschoben:

function get_rental_carousel_images($rental_id) {

// loosely based on http://martyspellerberg.com/2011/11/outputting-the-wordpress-attachments-gallery/

global $rental;

$images = get_children( array(
    'post_parent' => $rental_id,
    'post_status' => 'inherit',
    'post_type' => 'attachment',
    'post_mime_type' => 'image',
    'order' => 'ASC',
    'orderby' => 'menu_order ID'
) );

if ($images) :

    foreach ($images as $attachment_id => $image) :

        $img_url = wp_get_attachment_url( $image->ID );

        ?>

        <img src="<?php echo $img_url; ?>" />

    <?php endforeach; ?>

<?php endif;

und dann Bilder in meiner Vorlage wie folgt ausgeben:

<?php get_rental_carousel_images( get_the_ID() ); ?>

0
warm__tape