自定义帖子类型-相关产品

时间:2018-10-16 07:57:10

标签: php wordpress custom-post-type

我已经在Wordpress网站上创建了一个自定义帖子类型“产品”。产品的详细信息页面为single-product.php,可完美显示有关该产品的所有信息。

所有产品将按以下结构分类:

  1. Toegangscontrols

    1. 电子书报
    2. 魔杖
    3. 软件
    4. ...
  2. 总产量

    1. Sleutelkaarten
    2. Kluizen
    3. ...

我的网站上有两个测试产品。两种产品的类别均为“ Electronische sloten”。这是“ Toegangscontroles”的子类别。

Category

我想在single-product.php上显示相关产品。该相关产品不能是当前产品本身,并且必须在同一父类别下。因此,在这种情况下,子类别为“ Toegangscontroles”的产品必须显示父项“ Toegangscontroles”的子类别中的5个随机相关产品。

现在这是我的代码:

<?php
    $related = get_posts( array( 
        'post_type' => 'product',
        'category__in' => wp_get_post_categories($post->ID),
        'numberposts' => 5, 
        'post__not_in' => array($post->ID) ) );

    if( $related ) foreach( $related as $post ) {
        setup_postdata($post); ?>

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

    <?php }
    wp_reset_postdata();    
 ?>

当我转到产品A时,我会在相关产品下看到产品B,但是当我转到产品B页面时,却看不到产品A。尽管它们的类别完全相同。

谢谢。

2 个答案:

答案 0 :(得分:1)

还没有测试过,但是您可以尝试

$related = get_posts( array( 
  'post_type' => 'product',
  'tax_query' => array( array(
    'taxonomy' => $taxonomy_name,
    'field' => 'term_id',
    'terms' => wp_get_post_terms($post->ID, $taxonomy_name, array('fields' => 'ids'))        
  ) ),
  'numberposts' => 5, 
  'exclude' => array($post->ID)
) );

答案 1 :(得分:0)

请使用以下代码,我认为它会起作用。

$related = new WP_Query(
    array(
        'category__in'   => wp_get_post_categories( $post->ID ),
        'posts_per_page' => 5,
        'post__not_in'   => array( $post->ID )
    )
);

if( $related->have_posts() ) { 
    while( $related->have_posts() ) { 
        $related->the_post(); ?>
       <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    <?php }
    wp_reset_postdata();
} ?>