从另一个共享相同分类的帖子类型获取帖子?

时间:2015-07-31 11:54:36

标签: php wordpress custom-post-type taxonomy

我在Wordpress中设置了两种自定义帖子类型,一种称为产品,另一种称为其他供应商。这些的问题是'product',其中一个是'supplier'

这两种帖子类型共享一个名为供应商的自定义分类,其中slug是'supplier-tax'。然后有很多孩子是不同的供应商。

基本上,我想要做的是当你在一个产品的单个帖子页面上时,我也需要为供应商提供一个帖子。我认为,如何设置它的最佳方法是在产品页面上从供应商分类中选择合适的供应商。然后,这会查询并从“供应商”发布信息。使用相同的选定分类法发布ttype。

我写了这个查询,它带来了分类中的帖子,但是它需要我告诉它哪个分类法和哪个slug等引入加上它不会查询使它无用的不同帖子类型,但它是一个开始:

<?php 
$the_query = new WP_Query( array(
    'post_type' => 'product',
    'tax_query' => array(
        'taxonomy' => 'supplier-tax',
        'field' => 'slug',
        'terms' => 'supplier_1',

    ),
) );

while ( $the_query->have_posts() ) :
    $the_query->the_post(); ?>
        <?php the_title(); ?>
        <?php the_post_thumbnail('full'); ?>
        <?php the_content(); ?>

<?php endwhile; ?>


<?php wp_reset_postdata(); ?>

我试图调整并包含我喜欢以前来源的查询中的部分,但我似乎无法破解它。这是我的尝试:

<?php  
    $terms = wp_get_post_terms( $post->ID, 'supplier-tax' );
    if($terms){
        $supplier_terms = array();
        foreach ($terms as $term){
        $supplier_terms[] = $term->slug;
    }

    $original_query = $wp_query;
    $wp_query = null;
    $wp_query = new WP_Query( array(
        'post_type' => 'supplier',
        'tax_query' => array(
            array(
            'taxonomy' => 'supplier-tax',
            'field' => 'slug',
            'terms' => $supplier_terms, //the taxonomy terms I'd like to dynamically query
            'posts_per_page' => '-1'
            ),
        ),
        'orderby' => 'title',
        'order' => 'ASC'
    ) );

    if ( have_posts() ): ?>
        <?php while (have_posts() ) : the_post(); ?>
        <?php the_title(); ?>"><?php the_title(); ?>
    <?php endwhile; ?>
    <?php endif;
        $wp_query = null;
        $wp_query = $original_query;
        wp_reset_postdata(); 
    } 
?>

有没有人对我做错了什么或我如何做到这一点有任何想法?

1 个答案:

答案 0 :(得分:0)

我设法找到了我的问题的解决方案,虽然我认为它不是最干净的标记,它可以正常工作。

<?php 
$the_query = new WP_Query( array(
    'post_type' => 'product',
    'tax_query' => array(
        'taxonomy' => 'supplier-tax',
    ),
) );

while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

<?php 
    $terms = get_the_terms( $post->ID, 'supplier-tax');
    foreach ( $terms as $term ) {
        $termID[] = $term->term_id;
    }
    echo $termID[0]; 
?>


<?php 
$my_query2 = new WP_Query( array(
    'post_type' => 'supplier',
    'tax_query' => array(
        'field' => 'slug',
        'terms' => '$termID',

    ),
) ); ?>

    <?php while ($my_query2->have_posts()) : $my_query2->the_post(); ?>
        <?php the_title(); ?>
        <?php the_post_thumbnail('full'); ?>
        <?php the_content(); ?>

<?php endwhile; ?>