Как получить таксономию родителя?

  • У меня есть 2 типа таможенного поста: "Художник" и "Концерт",
  • "Концерт" пользовательский тип сообщения является ребенком "Художника" пользовательский тип сообщения,
  • у "Художника" пользовательский тип сообщения есть таксономия "жанра".

Что я пытаюсь сделать (например): перечислите все концерты, которые принадлежат художникам "поп-" жанра.

Вот запрос моей мечты:

SELECT * FROM posts WHERE post_type = "concert" AND post_parent_term = "pop"

Я в настоящее время думаю нет такой вещи как post_parent_term, надежда, я неправ... (Я знаю, что могу добавить таксономию "жанра" к "Концерту" пользовательский тип сообщения и voilà! Но мне действительно любопытно знать, существует ли другой способ достигнуть этого).

Спасибо усовершенствованием.

2
14.03.2011, 02:30
3 ответа

Что я пытаюсь сделать (например): перечислите все концерты, которые принадлежат художникам "поп-" жанра.

Можно сделать это на двух шагах:

// 1. Get all the pop artist IDs
$artist_ids = get_posts( array(
  'fields' => 'ids',
  'post_type' => 'artist',
  'genre' => 'pop'
) );

// 2. Get all the concerts associated to those artists
$artist_ids = implode( ',', array_map( 'absint', $artist_ids ) );

$concerts = $wpdb->get_results( "
  SELECT * FROM $wpdb->posts
  WHERE post_type = 'concert'
  AND post_status = 'publish'
  AND post_parent IN ({$artist_ids})
  ORDER BY post_date DESC
" );

В WP_Query существует post_parent аргумент, но он не принимает массив, следовательно прямой запрос.

3
19.02.2020, 22:30
  • 1
    теперь, когда я вижу это, я думаю к моему сам, "насколько немой я могу быть?", Хороший один +1. –  Bainternet 14.03.2011, 02:50
  • 2
    за Вашу справку, это работает отлично! –  inwpitrust 26.03.2011, 00:31

Родительская страница хранится в $post-> post_parent

Таким образом, можно просто захватить родительское сообщение тот путь и затем спросить это, поскольку это - информация о таксономии/категории/теге.

0
19.02.2020, 22:30

Не уверенный, если это - правильный путь, но Вы могли бы создать вложенные циклы:

//сначала получите всех художников с термином поп

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'genre',
            'field' => 'slug',
            'terms' => 'pop'
        ))
    'post_type' => 'Artist',
    'posts_per_page' => -1
    );
$Artists = new WP_Query( $args );
//loop through them and get there child posts of concerts 
if ( $Artists->have_posts() ) { 
    while ( $Artists->have_posts() ) {
        $Artists->the_post();
        $last_artist = $post;
        $Concerts = new WP_Query();
        $Concerts->query(array(
                        'post_type' => 'concert',
                        'posts_per_page' => -1,
                        'post_parent' => $post->ID
                        ));
        while ( $Concerts->have_posts() ) {
            $Concerts->the_post();
            //do concert stuff here
            //the_title();
            //the_content();
        }
        wp_reset_postdata();
        $post = $last_artist;
    }
}
0
19.02.2020, 22:30
  • 1
    Да, вложенные WP_Query () s являются плохой идеей. –  scribu 14.03.2011, 02:52

Теги

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