Gebrochen? WP_Query und "Anhang" als Beitragstyp

18

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?

Aktualisieren*

Vielen Dank an Wok, der mich in die richtige Richtung geleitet 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  
    )
);  
Jonathan Wold
quelle
Ich frage mich, was der Unterschied zwischen post_status auf 'null' vs 'inherit' 'gesetzt ist
Wok
Du hast mir gerade viel Schmerz erspart, 'post_status' => 'inherit' danke!
Pat

Antworten:

14

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'                  
            );
Wok
quelle
13

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

'post_status' => 'any'

Unterlassen Sie: 'post_status' => null

Dies ist wichtig, da Anhänge kein a haben post_statusund der Standardwert für post_status, publishedkeine Anhänge findet.

Pham
quelle
Bitte bemühen Sie sich, die Antwort zu erklären, anstatt nur ein oder zwei Zeilen Code zu posten.
s_ha_dum
Ja, wie kommt es, dass das funktioniert? Ich konnte meinen Anhang nicht auf meiner Archivseite anzeigen lassen, bis ich ihn hinzugefügt habe.
Claire
0

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.

Milo
quelle
0

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 das 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.

Chad Von Lind
quelle
Funktioniert die Paginierung damit? Und können Sie den Rest Ihres Ausgabecodes anzeigen? Ich bin gerade dabei, eine Themengalerie neu zu codieren, um die Anhänge auf der Seite tatsächlich zu paginieren. Vielen Dank!
Wenn ich 4 Bilder in einen Beitrag hochlade und dies in den Hauptinhaltseintrag div in single.php hinzufüge, werden nur 4 Bild-Tags ausgespuckt. Das src = von jedem führt zu der ursprünglichen großen Bildgröße. Die Paginierung funktioniert nicht, da alle an den Beitrag angehängten Bilder ausgespuckt werden.
Chad Von Lind