【发布时间】:2010-11-15 17:12:01
【问题描述】:
我有一个电影数据库,我想知道演员 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,并显示他们出演过的每一部电影,而不仅仅是他们都出演过的电影。
谢谢, 貂
编辑: 我想我快到了,我卡在一个 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);
一切顺利, 貂
【问题讨论】: