使用自定义分类显示自定义帖子类型的帖子

时间:2018-10-26 作者:Milan Bastola

我已创建自定义帖子类型\'CPT_A\' 使用CPT UI插件。我还创建了自定义分类法\'Category_A\'\'Category_B\' 对于\'CPT_A\'. 我有帖子\'Post_A\', \'Post_B\', \'Post_C\', \'Post_D\', \'Post_E\' 对于\'CPT_A\' 和已分配\'Post_A\', \'Post_B\', \'Post_C\' 自定义分类法\'Category_A\'\'Post_D\', \'Post_E\' 至类别\'Category_B\'.

我已创建存档页\'archive-CPT_A.php\' 显示的所有帖子\'CPT_A\' 岗位类型。和WP存档。php处理所有类别的帖子列表\'CPT_A\' 职位。还有\'single-CPT_A.php\' 显示单个\'CPT_A\' 邮递

现在,我想做的是创建一个侧栏,并尝试显示\'CPT_A\' 在侧栏中。如果帖子来自“Category\\u A”,则应显示来自同一类别的其他帖子,如果帖子来自“Category\\u B”,则应显示来自“Category\\u B”的其他帖子,因此我使用了以下代码:

<?php
    $cats = get_terms(\'CPT_A\');

    $args = array(
        \'post_type\' => \'CPT_A\',
        \'post__not_in\' => array( get_the_ID() ),
        \'posts_per_page\' => 5,
        \'cat\'     => $cats[0]->term_id,
    );
    $query = new WP_Query( $args );

?>  

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

<li>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>

<?php endwhile; endif; wp_reset_postdata(); ?> 
但它显示了从列表中隐藏当前帖子(这是正确的),同时也显示了“Category\\u B”中的其他帖子。经过一些研究,我尝试了以下代码:

<?php

    $cats = get_terms(\'tour_category\');

    $args = array(
        \'post_type\' => \'tour_package\',
        \'post__not_in\' => array( get_the_ID() ),
        \'posts_per_page\' => 5,
        \'cat\'     => $cats[0]->term_id,
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'tour_category\',
                \'field\' => \'slug\',
                \'terms\' => $custom_term->slug,
            )
            )
    );
    $query = new WP_Query( $args );

?>  

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

<li>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>

<?php endwhile; endif; wp_reset_postdata(); ?>
但它没有给我显示任何东西。

最好的方法是什么?我没有找到任何适合我的教程,所以把这个问题贴在这里。

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

我会用“get\\u the\\u terms”来获取与帖子相关的术语,而不是“get\\u terms”,这里是一个快速建议(未测试)

    $args=array(  
        \'post_type\'=>\'tour_package\',                 
        \'post__not_in\' => array(get_the_ID()),
        \'posts_per_page\'=> 5, 
        \'caller_get_posts\'=>1,//handle sticky post but not in first
    ); 

    $categories = get_the_terms( get_the_ID(),\'tour_category\' );

    if ($categories)
            {   
                $category_ids = array();         
                foreach($categories as $individual_category){
                   $category_ids[] = $individual_category->term_id; 
                }
                if(!empty($category_ids))
                {

                    $args[\'tax_query\']= array(
                        array(
                            \'taxonomy\' => \'tour_category\',
                            \'field\'    => \'term_id\',
                            \'terms\'    => $category_ids,
                        ),
                    );
                }
            }
$query = new WP_Query( $args );

结束

相关推荐

echo a tax term in loop

对于列表中的每个项目,我需要在之后在此循环中回显CPT的一个术语。感谢您的指导或帮助。原始代码来自Stackoverflow。com,因为它起作用了。 <?php $da_place = get_field(\'smart_place\'); //acf field $args = array( \'post_type\' => \'to_do_items\', \'tax_query\' => array