具有多个分类查询的自定义循环

时间:2012-12-20 作者:Chip Strong

抱歉——stackexchange是新手,实际上在Stack Overflow中发布了这篇文章,因为我不知道有一个特定于WP的关节。

我的问题--

What I Have: 我有工作事件列表的代码。有一个自定义帖子(事件)和三个分类法(位置、月份、类型)。以下代码列出了未来的事件,并按自定义字段(start\\u date)对其排序。事件列表也可以按分类法排序。例如,您可以只查看12月(月)的事件,或按位置查看事件(蒙大拿州)。

What I Can\'t Figure Out: 如何按两种不同的分类法对列表进行排序。例如:12月(月)的活动,也在蒙大拿州(地点)。它似乎只是选择了其中一个。

Other Info: 使用标准Wordpress循环(而不是下面的自定义循环)时,使用此CPT和分类法进行多个查询没有问题,但当然,它会发布所有发生的事件,包括过去发生的事件。

此外,这是我的第一个wp\\U查询,所以我希望这是显而易见的。

文件:(archives events.php)

<?php 
$today = date(\'Ymd\');       
$my_query = new WP_Query( array(
    \'post_type\' => \'events\',
        \'tax_query\' => array(
        \'relation\' => \'OR\',
          array(
            \'taxonomy\' => \'location\',
            \'terms\' => $term,
          ),
             array(
            \'taxonomy\' => \'month\',
            \'terms\' => $term,
          ),
          array(
            \'taxonomy\' => \'type\',
            \'terms\' => $term,
          )), 
    \'posts_per_page\' => 10,
    \'meta_compare\' => \'>\',
        \'meta_value\' => $today,
    \'orderby\' => \'meta_value\', 
    \'meta_key\' => \'start_date\',
    \'order\' => \'ASC\',
    \'paged\'=> $paged, 
)); ?>

<?php if ( $my_query->have_posts() ) : while ($my_query->have_posts() ) : $my_query->the_post();?>

<!-- OUTPUT OF QUERY -->

<?php endwhile; 
wp_reset_postdata();
endif; ?>

1 个回复
SO网友:kevin

以下是使用多个分类法进行查询的函数:

function posts_search ($post_type,$taxonomies) { // $taxonomies should be an array (\'taxonomy\'=>\'term\', \'taxonomy2\'=>\'term2\')
    foreach ($taxonomies as $key=>$value) {
        $args=array(\'post_type\'=>$post_type,\'post__in\'=>$ids,$key=>$value);
        unset($ids); $ids=array();
        foreach($posts=get_posts($args) as $post) { $ids[]=$post->ID; }
        if (empty($ids)) return false;
    }
    return $posts;
}
下面是我在过去的项目中如何使用它的一个示例:

$posts = posts_search (\'produtos\',array(\'prod-categoria\'=>\'blocos\',\'prod-cols\'=>\'7-c\')); 
if($posts) { 
    foreach($posts as $post) { 
        // show infos from the post... 
    } 
}
Theprodutos 是我正在搜索的自定义帖子类型,prod-categoriaprod-cols 是两种自定义分类法和blocos7-c 是以前自定义分类法中的两个术语。

希望这有帮助。

OBS1;这个函数不是我写的,但可能来自这里的一个老帖子。OBS2;这在3.1.2安装中起作用。

结束

相关推荐

wp-query problem with author

我运行查询:SELECT post_author FROM `wp_posts` 看到很多帖子都有作者值1。然后执行搜索。php如下所示:$args = array( \'author\' => 1, ); $the_query = new WP_Query( $args ); 没有结果!怎么了?