对将帖子归入另一个分类的分类的自定义选择查询

时间:2011-08-24 作者:Jennifer Stuart

我有一个自定义的帖子类型“vendor”-我希望人们通过自定义分类法深入查看帖子。我有两个自定义分类法——一个用于“服务”,另一个用于“位置”。

因此,在自定义模板中,我列出了所有可用的服务。。。单击其中一个后,我将加载另一个显示,其中列出了所有位置(并在URL查询字符串中传递服务ID)。。。单击位置时。。。(我在查询字符串中再次传递服务ID和位置ID),然后加载一个按该服务和位置分类的供应商列表。

我遇到的问题是,有可能在位置列表中,它将包括一个没有帖子具有先前选择的服务的位置。

因此,基本上,当我得到位置列表时,我需要一个位置列表,其中包含的帖子也已按特定服务分类,这样我就不会得到一个空列表。

例如:假设我选择了“摄影”服务,然后从我的地点列表中选择“波士顿”,但我在波士顿没有任何摄影师。。。既然如此。。。我不想让“波士顿”出现在名单上。

虽然我的服务列表是一个简单的“get\\u terms”调用。。。我想我需要一个自定义的select查询($wpdb->get\\u results)来获取位置列表,但我不确定查询需要什么。。。

1 个回复
SO网友:Jennifer Stuart

我联系了Scribu,因为他的Query Multiple Taxonomies插件做了我想做的事情,他为我指明了正确的方向。我(在我的开发环境中)已经做到了这一点,所以我想就是这样了。(Scribu将这些函数作为一个类的一部分拆分为两个函数-我相信这是一种“优雅”(非故意的双关语)的方式-但这是内联的:(在这里发布,以防对其他人有帮助…)

//building this as if we were going to look for
//posts that have been categorized with this service
$tempargs = array(\'post_type\' => \'vendors\',
        \'tax_query\' => array(array(
                    \'taxonomy\' => \'service\',
                    \'field\' => \'id\',
                    \'terms\' => intval($_GET[\'srv\'])
                ))
            );
$args = array_merge( $tempargs, array(
        \'fields\' => \'ids\',
        \'nopaging\' => true,
        \'no_found_rows\' => true,
        \'ignore_sticky_post\' => true,
        \'cache_results\' => false,
) );
$query = new WP_Query;
$filtered_ids = $query->query( $args );
//now getting the list of location terms that have posts in this service
$locationsWdups = wp_get_object_terms( $filtered_ids, \'location\' ); 
//the above will include duplicate locations so we\'ll combine them
//into one array below
$locations = array();
foreach ( $locationsWdups as $singloc )
     $locations[ $singloc->term_id ] = $singloc;    
然后您可以在$位置上执行foreach。。。

(如果我遗漏了什么或做得不正确,请纠正我)

结束

相关推荐

Show Custom Taxonomy Slug(s)?

有人能帮我吗?我需要打印自定义分类法的slug,可以吗?下面这类代码很有用,但它只显示了名称,而不是我需要的用于类目的的slug。。<?php $terms = get_the_terms( $post->ID , \'area\' ); foreach( $terms as $term ) {print $term->name; unset($term);}?> 有没有办法为我的自定义分类法“区域”获取slug??非常感谢您的帮助:)