У меня есть база данных фильмов, я хочу знать, в каких фильмах были задействованы актеры A и B.
function getmoviefromactor(){
global $wp_query;
global $wpdb;
global $post;
$loop = new WP_Query(array(
'post_type' => 'movies',
'actors' => 'A', 'B',
'posts_per_page' =>-1,
));
print_r($loop);
while ( $loop->have_posts() ) : $loop->the_post();
?>
<h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<?php
the_content();
endwhile;
}
Проблема с этим кодом заключается в том, что Wordpress по умолчанию ищет актера A или B и отображает каждый фильм, в котором они были показаны, а не только фильмы, в которых они оба были показаны.
Спасибо,
Куница
EDIT:
Я думаю, что я почти там, я застрял в SQL-запросе, он прекрасно работает, если я просто ищу одного из участников, проблема возникает, когда я ищу обоих, что приводит к пустому массиву.
Когда я выполняю ручной поиск в SQL-запросе, я вижу дублированный контент с разными term.slugs, есть ли обходной путь для этого?
global $wpdb;
$querystr = "
SELECT *
FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
WHERE $wpdb->posts.post_type = 'movies'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->term_taxonomy.taxonomy = 'actors'
AND $wpdb->terms.slug = 'A'
AND $wpdb->terms.slug = 'B'
ORDER BY $wpdb->posts.post_date DESC";
$pageposts = $wpdb->get_results($querystr, OBJECT);
print_r($pageposts);
Всего наилучшего,
Куница