簡體   English   中英

如何在woocommerce商店頁面中隱藏同名產品?

[英]How to hide same name products in woocommerce shop page?

我正在創建一個電子商務網站。 在那個網站上,我添加了許多產品。 有些產品同名,但我想在商店頁面隱藏同名產品。
例如:-有一個名為“ ABC ”且名稱為“ ABC ”的產品。 添加了很多產品但sku不同,所以在Shop頁面中,我只想顯示一個具有相同名稱產品的產品。

存檔-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 頁上。
而且我也不想將同名產品設為私有或不公開。

您可以使用 WP_QUERY 的 posts_distinct 過濾器來實現。 (恢復模板的 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';
});

我遇到了同樣的問題,我已經設法用一個函數來做到這一點。 此功能會在商店頁面、類別和搜索結果中隱藏相同標題的產品。

嘗試這個:

add_filter( 'posts_groupby', 'custom_posts_groupby', 10, 2 );
function custom_posts_groupby( $groupby, $query ) {
     global $wpdb;

     if ( is_main_query() && (is_shop() || is_product_category() || is_search() )) {
         $groupby = "{$wpdb->posts}.post_title";
     }

     return $groupby;
}

你可以在這里看到我的問題https://stackoverflow.com/a/60837657/10183871

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM