Пользовательский тип сообщения - связанные продукты - PullRequest
0 голосов
/ 16 октября 2018

Я сделал пользовательский тип записи "продукт" на моем сайте Wordpress.Страница сведений о продукте - single-product.php, в которой все, что с продуктом, отлично видно.

Весь продукт будет классифицирован в следующей структуре:

  1. Toegangscontroles

    1. Elektronische sloten
    2. Wandlezers
    3. Программное обеспечение
    4. ...
  2. Overigeproducten

    1. Sleutelkaarten
    2. Kluizen
    3. ...

У меня есть два тестовых продукта на моем веб-сайте,Оба продукта имеют категорию «Электронный слотен».Это дочерняя категория "Toegangscontroles".

Category

Я хочу показать связанные продукты на single-product.php Этот продукт не может быть текущимсам продукт и должен быть в той же родительской категории.Таким образом, в этом случае продукт с дочерней категорией «Toegangscontroles» должен отображать 5 случайно связанных продуктов из дочерних категорий родительского «Toegangscontroles».

Это мой код:

<?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 голосов
/ 16 октября 2018

Пожалуйста, используйте ниже код, я думаю, что это будет работать.

$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();
} ?>
0 голосов
/ 16 октября 2018

Не проверял это, но вы можете попробовать

$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)
) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...