Зламаний? WP_Query та "вкладення" як тип публікації


18

У мене на сторінці додається галерея. На цій сторінці я виконую такий запит:

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

Я експериментував досить багато способів, і я чомусь не можу отримати вкладення, щоб повернутися. Чи пропускаю я щось очевидне тут?

Оновити *

Дякую Воку, що вказував мене в правильному напрямку.

Виявляється, я використовував "статус" замість "post_status". Кодекс використав "статус" як приклад у своєму контекстному поясненні типу публікації "вкладення". Я оновив кодекс на посилання "post_status" замість цього. Правильний код такий:

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

Цікаво, яка різниця між встановленням post_status на "null" vs "nasledit"
Wok,

Ви просто врятували мені багато болю завдяки 'post_status' => 'inherit' Спасибі!
Пт

Відповіді:


14

Це параметри запиту, які я використовую ... працює для мене, коли я переглядаю результати

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

13

Додайте $args, важливо.

'post_status' => 'any'

Не: 'post_status' => null

Це важливо , тому що вкладення не мають post_status, тому значення за замовчуванням post_status, published, не знайдуть вкладення.


Будь ласка, намагайтеся пояснити відповідь, а не просто розміщувати рядок або два коду.
s_ha_dum

Так, як це працює? Я не зміг знайти своє вкладення на сторінці архіву, поки не додав це.
Клер

0

Дивлячись на генерований запит, він здається, що це помилка. 'status' => 'спадкувати' трактується як статус батьків, коли запис у db для вкладення буквально 'успадковується'.

Альтернативою є використання get_children замість WP_Query.


0

Мені вдалося відобразити всі зображення, які є вкладеннями до публікації, використовуючи цей код.

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

І щоб повторити URL-адресу вихідного зображення в повному розмірі, ви можете зв'язати це зображення з

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

Сподіваємось, це підхід до того, що ви намагаєтеся зробити.


Чи працює з цим пагинація? І чи можете ви показати решту свого вихідного коду? Я перебуваю в середині перекодування галереї тем, щоб насправді пакунити вкладені файли на сторінці. Спасибі!

Якщо я завантажу до публікації 4 зображення, і я додаю це в основний розділ для введення вмісту в single.php, він просто виплюне 4 теги зображення. Src = кожного призведе до початкового великого розміру зображення. Пагинація не працює з цим, оскільки вона випилює будь-які зображення, які додаються до публікації.
Чад Фон Лінд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.