我已经在Wordpress网站上创建了一个自定义帖子类型“产品”。产品的详细信息页面为single-product.php,可完美显示有关该产品的所有信息。
所有产品将按以下结构分类:
Toegangscontrols
总产量
我的网站上有两个测试产品。两种产品的类别均为“ Electronische sloten”。这是“ Toegangscontroles”的子类别。
我想在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。尽管它们的类别完全相同。
谢谢。
答案 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();
} ?>