具有2个分类的侧边栏中的Advanced和Tax_Query

时间:2013-05-28 作者:david

我有两种分类法:品牌和产品。在单侧栏中,我在侧栏中显示了帖子的品牌和产品,但我想显示当前分类术语品牌的所有其他产品。这是我将要尝试的,但我没有错误,它不会返回任何结果:

<?php
// get current taxonomy product term
$post_product = get_the_term_list($post->ID, \'product\', \'\', \', \');
echo \'Product : \'.$post_marque;

// get current taxonomy brand term
$post_brand = get_the_term_list($post->ID, \'brand\', \'\', \', \'); 
echo \'Brand : \'.$post_brand;

// make the custom query
  $do_not_duplicate = $post->ID;
            $taxquery = new WP_Query( $taxquery_args ); while($taxquery->have_posts()) : $taxquery->the_post(); 

            if( $post->ID == $do_not_duplicate ) continue;

            $taxquery_args = array(

                \'post_type\'      => \'any\', 
                \'posts_per_page\' => 10,

                \'tax_query\' => array(

                    \'relation\' => \'AND\',
                    array(
                        \'taxonomy\' => \'brand\',
                        \'field\' => \'slug\',
                        \'terms\' => $post_marque
                    )
                    ,
                    array(
                        \'taxonomy\' => \'product\',
                        \'field\' => \'slug\',
                        \'terms\' => $post_product
                    )
                )
            );

            the_permalink();
            var_dump($taxquery);

            endwhile;  wp_reset_postdata(); ?>
如何返回所有分类学产品术语execpt current post term,谁拥有该帖子的当前分类学品牌术语?是否可以返回term->name和term slug?

Screenshot

这是一个屏幕截图,例如,当前帖子将有分类术语brand=Antec和分类术语product term=P280,我希望所有产品术语都有品牌术语“Antec”,按术语->名称,除了“P280”,因此结果应返回以下术语:iSO、GX700等。。。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您正在使用get_the_term_list 它生成一个HTML字符串,其中包含与帖子和给定分类相关的分类术语。

尝试为terms 的输入参数WP_Query 使用如下阵列:

\'terms\' => array( 11, 22, 33 ),

\'terms\' => array( \'term1\', \'term2\', \'term3\' ),
在代码示例中

\'terms\' => $post_product
所以你可以用这样的东西

$post_product_terms = get_the_terms( $post->ID, \'product\' );
$post_product = array();
foreach( $post_product_terms as $term ){
    $post_product[] = $term->slug;    
}
构建$post_product 大堆

如果要排除某些术语,可以使用

\'operator\' => \'NOT IN\',
因此,您的示例可以是:

array(
    \'taxonomy\' => \'product\',
    \'field\' => \'slug\',
    \'terms\' => $post_product,
    \'operator\' => \'NOT IN\',
)

结束

相关推荐

Custom taxonomy in short code

我在网格显示的主题中使用短代码。代码仅考虑类别ID。我还想添加自定义分类法,以便将输出作为分类帖子和自定义分类帖子。 function five_col( $atts ) { extract( shortcode_atts( array( \'cats\' => \'1\', \'num\' => \'2\', \'offset\' => \'0\', ), $atts ) );