it-swarm.com.de

Gebrochen? WP_Query und "Anhang" als Beitragstyp

Ich habe eine Galerie an eine Seite angehängt. Auf dieser Seite führe ich die folgende Abfrage aus:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'status' => 'inherit', // Inherit the status of the parent post 
    'orderby' => 'Rand', // Order the attachments randomly  
    )
);

Ich habe auf verschiedene Arten experimentiert und aus irgendeinem Grund kann ich keine Anhänge zurückbekommen. Vermisse ich hier etwas Offensichtliches?

Update *

Vielen Dank an Wok, der mich in die richtige Richtung gelenkt hat.

Es stellt sich heraus, dass ich "status" anstelle von "post_status" verwendet habe. Der Codex hatte "status" als Beispiel für die kontextbezogene Erläuterung des Post-Typs "attachment" verwendet. Ich habe den Codex stattdessen auf "post_status" aktualisiert. Der richtige Code lautet wie folgt:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "any".
    'orderby' => 'Rand', // Order the attachments randomly  
    )
);  
16
Jonathan Wold

Dies sind die Abfrageparameter, die ich verwende ... funktioniert bei mir, wenn ich die Ergebnisse durchlaufe

array(
                'post_parent' => $post->ID,
                'post_status' => 'inherit',
                'post_type'=> 'attachment',
                'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'                  
            );
13
Wok

Fügen Sie in $args hinzu, es ist wichtig.

'post_status' => 'any'

Nicht tun: 'post_status' => null

Dies ist wichtig, da Anhänge keinen post_status haben, sodass der Standardwert für post_status, published, keine Anhänge findet.

10
Pham

Bei der Abfrage, die sie generiert, scheint es sich um eine Art Fehler zu handeln. 'status' => 'inherit' wird als der Status des Elternteils interpretiert, wenn der Eintrag in der Datenbank für den Anhang wörtlich 'inherit' ist.

Eine Alternative ist die Verwendung von get_children anstelle von WP_Query.

0
Milo

Ich konnte mit diesem Code alle Bilder anzeigen, die Anhänge zu einem Beitrag sind.

<?php
$args = array( 'post_type' => 'attachment', 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image' ,'post_status' => null, 'post_parent' => $post->ID );
$attachments = get_posts($args);
    if ($attachments) {
    foreach ( $attachments as $attachment ) { ?>
      <img src="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" />
<?php   }
    } ?>

Um die URL des Originalbilds in voller Größe wiederzugeben, können Sie dieses Bild mit verknüpfen

<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>

Hoffentlich ist dies eine Annäherung an das, was Sie versuchen zu tun.

0
Chad Von Lind