Złamany? WP_Query i „załącznik” jako typ postu


18

Mam galerię dołączoną do strony. Na tej stronie uruchamiam następujące zapytanie:

$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  
    )
);

Eksperymentowałem na kilka sposobów iz jakiegoś powodu nie mogę dostać załączników do zwrotu. Czy brakuje mi czegoś oczywistego?

Aktualizacja*

Dzięki Wokowi za wskazanie mi właściwego kierunku.

Okazuje się, że używałem „status” zamiast „post_status”. Kodeks wykorzystał „status” jako przykład w swoim kontekstowym objaśnieniu typu postu „załącznik”. Zamiast tego zaktualizowałem kodeks, tak aby zawierał odniesienie „post_status”. Prawidłowy kod wygląda następująco:

$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  
    )
);  

Zastanawiam się, jaka jest różnica między ustawieniem „post_status” na „zero” a „dziedziczenie”
Wok,

Właśnie uratowałeś mi wiele bólu dzięki 'post_status' => 'inherit' Dzięki!
Pat

Odpowiedzi:


14

Są to parametry zapytania, których używam ... działa dla mnie, gdy przeglądam wyniki

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

13

Dodaj $args, to ważne.

'post_status' => 'any'

Nie rób: 'post_status' => null

Jest to ważne, bo załączniki nie masz post_status, więc wartość domyślną post_status, publishedznajdzie żadnych załączników.


Postaraj się wyjaśnić odpowiedź, a nie tylko opublikować wiersz lub dwa z kodu.
s_ha_dum,

Tak, dlaczego to działa? Nie mogłem wyświetlić mojego załącznika na stronie archiwum, dopóki go nie dodam.
Claire,

0

Patrząc na zapytanie, które generuje, wydaje się, że to rodzaj błędu. „status” => „dziedziczenie” jest interpretowane jako status rodzica, gdy pozycja w db dla załącznika jest dosłownie „dziedziczona”.

Alternatywą jest użycie get_children zamiast WP_Query.


0

Byłem w stanie wyświetlić wszystkie obrazy, które są załącznikami do postu przy użyciu tego kodu.

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

Aby powtórzyć adres URL oryginalnego obrazu w pełnym rozmiarze, możesz połączyć ten obraz z linkiem

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

Mam nadzieję, że jest to podejście do tego, co próbujesz zrobić.


Czy paginacja działa z tym? Czy możesz pokazać resztę kodu wyjściowego? Jestem w trakcie przebudowywania galerii motywów, aby faktycznie podzielić strony na załączniki. Dzięki!

Jeśli załaduję 4 zdjęcia do posta i dodam to do głównego wpisu div div w single.php, wypluję 4 tagi graficzne. Src = każdego doprowadzi do oryginalnego dużego rozmiaru obrazu. Podział na strony nie działa z tym, ponieważ wyrzuca wszystkie obrazy dołączone do posta.
Chad Von Lind,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.