Как скрыть одноименные товары на странице магазина woocommerce? - PullRequest
0 голосов
/ 13 июня 2019

Я создаю сайт электронной коммерции.На этом сайте я добавил много продуктов.Некоторые продукты имеют одно и то же имя, но я хочу скрыть одноименные продукты на странице магазина.
Например: - Существует продукт с именем " ABC " и именем " ABC"продукт.Добавлено много продуктов, но sku отличается, поэтому на странице магазина я хочу показать только один продукт с одинаковыми названиями продуктов.

archive-product.php :

$pn[0] = 'demo';
$i = 0;
while (have_posts()) {
  the_post();
  do_action('woocommerce_shop_loop');
  global $product;
  $pr = $product->get_name();
  $j = 0;
  $ps = sizeof($pn);
  $a = 1;
  while ($j <= $ps) {
    if ($pn[$j] == $pr) {
      $a = 0;
      break;
    }
    $j++;
  }
  if ($a != 0) {
    $i++;
    $pn[$i] = $pr;
    wc_get_template_part('content', 'product', $rst);
  }
}

Этот код работает нормально, но проблема в нумерации страниц .На странице 1 он показывает только 1 продукт и скрывает все другие продукты с таким же именем, но другие продукты с названиями, которые он покажет на 2-й странице нумерации страниц, что продукты не будут отображаться на странице 1.
И я также не хочусделать одноименные продукты частными или незарегистрированными.

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете сделать это с помощью фильтра posts_distinct от WP_QUERY. (вернуть код вашего цикла while назад)

add_filter( 'posts_distinct', function ( $distinct ) {
    if ( is_admin())return $distinct;
    //i have added just one is_admin exception,
    //but you can add there another conditions as well
    return 'DISTINCT';
});
...