Сломанный? 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» и «наследовать»?
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

Глядя на запрос, который он генерирует, он выглядит как ошибка. «статус» => «наследовать» интерпретируется как статус родителя, когда запись в базе данных для вложения буквально «наследовать».

Альтернативой является использование 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 сообщения в сообщение и добавлю их в элемент div основного содержимого в файле single.php, он просто выдаст 4 тега изображения. Значение src = каждого приведет к исходному большому размеру изображения. Разбивка на страницы не работает с этим, поскольку она выплевывает любые и все изображения, которые прикреплены к сообщению.
Чад фон Линд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.