Как выполнить WP_Query для получения вложений к сообщениям только от конкретной категории?

У меня есть блог WP с несколькими страницами и сообщения и несколькими категориями. Я хочу записать цикл для получения изображений, присоединенных к сообщениям (не страницы) и только те, которые от определенной категории, и это - дети. Идентификатор категории равняется 60.

Это - вызов WP_Query:

$my_query = new WP_Query( array(
  'post_type' => 'attachment',
  'cat' => '60',
  'post_mime_type' =>'image',
  'posts_per_page' => $batch_size,
  'nopaging' => false,
  'post_status' => 'all',
  'post_parent' => null,
  'meta_key' => 'my_hash',
  'orderby' => 'meta_value'
) );

Но я ничего не получаю!

Что я делаю неправильно?

2
26.06.2012, 15:59
3 ответа

Вы должны будете сначала захватить сообщения, затем захватите вложения, которые являются детьми упомянутых сообщений.

$my_query = new WP_Query( array(
    'meta_key' => 'my_hash',
    'nopaging' => true,
    'orderby' => 'meta_value',
    'fields' => 'ids',
    'cat' => '60',
));

if ( $post_ids = $my_query->get_posts() ) {
    $post_ids = implode( ',', $post_ids );
    $atts_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_parent IN($post_ids) AND post_type = 'attachment'" );   

    $my_query->query( array(
        'posts_per_page' => $batch_size,
        'post_mime_type' =>'image',
        'post_status' => 'all',
        'post_type' => 'attachment',
        'post__in' => $atts_ids,
    ));
}
1
19.02.2020, 22:32
  • 1
    , который я пытался внести этим изменением в этот Стенной плагин Изображения, но я не мог получить любой успех. Вы могли делать попытку для меня?Спасибо. –  aalaap 27.06.2012, 14:01
  • 2
    Этот плагин в настоящее время отображает стену с изображениями из всех сообщений, страницы и т.д. на блоге. Я хочу ограничить его сообщениями от конкретной категории или категорий. –  aalaap 27.06.2012, 14:08
  • 3
    я спросил разработчика плагина непосредственно и ему понравилась идея, таким образом, он изучает его! :-) –  aalaap 28.06.2012, 13:18

Сообщения вложения не имеют категорий, их родительские сообщения 'сообщения' делают, таким образом, у Вас есть две проблемы шага.

  • Найдите идентификаторы сообщений сообщения типа в категории (60?)
  • Найдите вложения, которые имеют a post_parent это находится в списке, который мы нашли в нашем первом запросе
1
19.02.2020, 22:32
  • 1
    Спасибо - я собирался испытать это в коде, но @TheDeadMedic уже сделал это для меня! –  aalaap 27.06.2012, 10:49

Если Вы хотите получить ссылки изображения frop категория и подкатегории, необходимо использовать это:

    global $wpdb;
$id = 60; // your cat id
$myrows = $wpdb->get_results( "SELECT p2.ID, p2.guid ".
    "FROM $wpdb->posts as p1, $wpdb->posts as p2, $wpdb->term_relationships as tr, $wpdb->term_taxonomy as tt  ".
    "WHERE ".
    "((tr.term_taxonomy_id = $id AND ".
    "p1.ID = tr.object_id) OR ".
    "(tt.parent = $id AND ".
    "tr.term_taxonomy_id = tt.term_taxonomy_id AND ".
    "p1.ID = tr.object_id)) AND ".
    "p1.post_status = 'publish' AND ".
    "p2.post_parent = p1.ID AND ".
    "p2.post_mime_type LIKE 'image%'".
    "GROUP BY p2.ID".
    "<= 5". // you able to limit the db answer
    "", ARRAY_A );
print_r( $myrows );
0
19.02.2020, 22:32

Теги

Похожие вопросы