web-dev-qa-db-ja.com

未分類の商品をショップページから隠す

WooCoomerceがバージョン3.3に更新されたとき、「未分類」の商品カテゴリが追加され、商品がある場合は商品が表示されていたすべてのページ(WooCommerceのショップページを含む)に表示されました。それから、少なくとも1つの割り当てられたカテゴリを持たないすべての製品は、(論理的には推測される)「未分類」カテゴリに割り当てられます。

私はいつも季節の商品を隠すという(おそらく理想的ではない)アプローチを使いました。この新しい変更は、これらの「隠された」製品が突然私がどのページにも望んでいないこの新しいカテゴリの販売用サイトに表示されることを意味しました。

私は「未分類」の商品カテゴリを隠す方法を探してウェブを検索しましたが、この問題が広まっていることがわかりました。 「未分類」のカテゴリをサブカテゴリにしてから、すべてのサブカテゴリを非表示にするか、CSSを使用してカテゴリを非表示にするなど、さまざまな解決策が提案されました。

https://wordpress.org/support/topic/uncategorized-product-category-still-showing-after-3-3-1/ /を参照してください。

しかし、これらの解決策のどれも「クリーン」または十分に堅牢ではありません。

私の回避策は、商品カテゴリのショートコードを使用して(カテゴリ化されていないカテゴリIDなしで)表示したい商品のみを表示することです。例えば:

[product_categories ids="11, 19, 18, 14, 7, 8, 9, 10, 15, 98, 16, 17"]

しかし、これは(ショートコードを使用しない)ショップページの問題を解決しません。

話題の問題であり、現時点では広まっているように見える「未分類」の商品カテゴリを隠すための強力な方法が誰かにあるのだろうか。

1
WPDavid

私は以下のようにrynoldos( https://Gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994 )から提供されたコードに基づいてこの問題を解決しました。

Functions.phpファイルに次のコードを含めます。

/** Remove categories from shop and other pages
 * in Woocommerce
 */
function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
        foreach ( $terms as $key => $term ) {
              if ( ! in_array( $term->slug, array( 'uncategorized' ) ) ) {
                $new_terms[] = $term;
              }
        }
        $terms = $new_terms;
    }
    return $terms;
}
add_filter( 'get_terms', 'wc_hide_selected_terms', 10, 3 );

このコードはWooCommerceのショップページに適用されます。これを別のページに適用したい場合は、is_shop()をis_page( 'YOUR_PAGE_SLUG')に置き換えてください。

私もこの問題の解決策を探そうとした回避策がありましたが、上記のコードは私にはうまくいきます。

1
Clinton

ショップページで未分類のカテゴリを非表示にする簡単な方法を見つけました。親のカテゴリ「なし」を別のカテゴリに変更しました。

それが役に立てば幸い :-)

マリアンヌ

1
Marianne