jonathanwold
  • 0
Учитель

Сломался? WP_Query и «вложение» как тип сообщения

  • 0

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

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

Я пробовал довольно много способов, и по какой-то причине я не могу вернуть вложения. Я пропустил что-то очевидное здесь?

Обновлять*

Спасибо Wok за то, что указал мне правильное направление.

Оказывается, я использовал «статус» вместо «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  
    )
);  
Share
  1. Интересно, в чем разница между post_status, установленным на «null» и «inherit»?

    • 0
  2. Это параметры запроса, которые я использую… работает для меня, когда я перебираю результаты

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

    Для получения более подробной информации см. официальную документацию по параметрам состояния WP_Query.

    • 0
  3. Добавьте $args, это важно.

    'post_status' => 'any'
    

    Не делайте: 'post_status' => null

    Это важно, потому что у вложений нет post_status, поэтому значение по умолчанию для post_status, published не будет находить вложений.

    • 0
  4. Глядя на запрос, который он генерирует, кажется, что это своего рода ошибка. ‘status’ => ‘inherit’ интерпретируется как статус родителя, когда запись в базе данных для вложения буквально ‘inherit’.

    Альтернативой является использование get_children вместо WP_Query.

    • 0
  5. С помощью этого кода я смог отобразить все изображения, прикрепленные к сообщению.

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

    Надеюсь, это подход к тому, что вы пытаетесь сделать.

    • 0

Оставить ответ

You must login to add an answer.