在页面上执行多个查询的最佳实践

时间:2012-05-06 作者:cheeselover

在我的WordPress网站上,我有三个类别:“moviestar”、“访谈”和“电影”。

在一个名为“Angelina Jolie”的“moviestar”类别页面上(并带有一个自定义变量starname=“Angelina Jolie”),我想显示其他类别中标记为“Angelina Jolie”的帖子。

我的页面示例:

安吉丽娜·朱莉(正常页面信息)

访谈

查询1-显示标有“AngelinaJolie”的“访谈”类别中所有帖子的链接列表

电影记录查询2-显示标有“安吉丽娜·朱莉”的“电影”类别中所有帖子的链接列表

NextGen Gallery查询3-显示NextGen Gallery中标记为“Angelina Jolie”的所有图片

所以我的问题是:

我如何查询带有安吉丽娜·朱莉标签的特定类别的帖子?像这样?

global $wpdb;
$yourCategory = \'123\';
$yourTag = \'Angelina-Jolie\';
$querystr = "
            SELECT p.* from $wpdb->posts p, $wpdb->terms t, $wpdb->term_taxonomy tt, $wpdb->term_relationships tr, $wpdb->terms t2, $wpdb->term_taxonomy tt2, $wpdb->term_relationships tr2
            WHERE p.id = tr.object_id
            AND t.term_id = tt.term_id
            AND tr.term_taxonomy_id = tt.term_taxonomy_id
            AND p.id = tr2.object_id
            AND t2.term_id = tt2.term_id
            AND tr2.term_taxonomy_id = tt2.term_taxonomy_id
            AND (tt.taxonomy = \'category\' AND tt.term_id = t.term_id AND t.slug = \'$yourCategory\')
            AND (tt2.taxonomy = \'post_tag\' AND tt2.term_id = t2.term_id AND t2.slug = \'$yourTag\')
            ";
$pageposts = $wpdb->get_results($querystr, OBJECT);
if ($pageposts):
    foreach ($pageposts as $post):
        setup_postdata($post);
        // do regular WordPress Loop stuff in here
    endforeach;
else :
    // nothing found
endif;
如何修改以上内容以查询多个类别并存储帖子所在的类别?

我将在页面上查询一次,然后使用PHP循环回显每个标题下的信息,这有意义吗?类似于。。。

while(($row=mysql_fetch_array($result))&&($row[\'cat\']==\'845\')){
  echo "<li><a href=\'".$row[\'url\']."\'>". $row[\'post_title\'] . "</a></li>";
放弃使用WordPress函数和查询,而是直接使用普通php查询db是否更好?

我真的需要一些建议或一个好的例子。我正在使用Wordpress 3.3.2

我读过以下内容,但我还不明白:

http://www.borishoekmeijer.nl/show-related-posts-using-custom-taxonomy/https://stackoverflow.com/questions/8563136/wordpress-query-filtering-by-custom-field-tag-and-category

1 个回复
SO网友:Milo

WP_Query 可以处理所有这些情况。请参阅处理多个taxonomies.

$this_cat = \'interviews\';
$this_tag = \'angelina-jolie\';

$args = array(
    \'tax_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'taxonomy\' => \'category\',
            \'field\' => \'slug\',
            \'terms\' => $this_cat
        ),
        array(
            \'taxonomy\' => \'post_tag\',
            \'field\' => \'slug\',
            \'terms\' => $this_tag
        )
    )
);
$interviews = new WP_Query( $args );

while( $interviews->have_posts() ):
    $interviews->the_post();
    // normal loops stuff
endwhile;

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post