Cum ascunzi o categorie de Woocommerce pe pagina de produs?

Cum ascunzi o categorie de Woocommerce pe pagina de produs?

Păi, mi-a luat ceva timp să mă prind. Nu mi-a fost chiar ușor să-mi dau seama printre câteva zeci de căutări pe Google și încercat soluții custom. De multe ori creem niște categorii doar pentru afișarea unor produse anume pe homepage, în widgeturi sau alte spații special amenajate pentru promoții. Este inestetic să vezi o categorie de genul „Promo1” sau „Campanie Ianuarie” sau cel puțin asta este părerea mea. Poate chiar există lume care dorește să aibă pe pagina de produs scris cu verde sau roșu: „Aparate de bărbierit”, „Promoții sincere”.

Am încercat soluția custom prima dată

Dap… a fost un eșec. Mi-am imaginat că reușesc să fac ușor un exclude. Și Tavi, la fel a crezut. Nope! Iată failul mai jos:

$categories = $product->get_category_ids();
$categoriesToRemove = array(53,76,77,78); // my ids to exclude
foreach ( $categoriesToRemove as $categoryKey => $category) {
    if (($key = array_search($category, $categories)) !== false) {
        unset($categories[$key]);
    }
}
$categoriesNeeded = $categories;

Apoi

echo wc_get_product_category_list( $product->get_id(), ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', count($categories), 'woocommerce' ) . ' ', '</span>' );

Apoi am dat peste o variantă funcțională

add_filter( 'get_the_terms', 'custom_product_cat_terms', 20, 3 );
function custom_product_cat_terms( $terms, $post_id, $taxonomy ){
    // HERE below define your excluded product categories Term IDs in this array
    $category_ids = array( 53,76,77,78 );

    if( ! is_product() ) // Only single product pages
        return $terms;

    if( $taxonomy != 'product_cat' ) // Only product categories custom taxonomy
        return $terms;

    foreach( $terms as $key => $term ){
        if( in_array( $term->term_id, $category_ids ) ){
            unset($terms[$key]); // If term is found we remove it
        }
    }
    return $terms;
}

Codul se pune, evident, în functions.php în tema de WordPress. Iar răspunsul de la cel care m-a ajutat a fost super succint. Practic, el a folosit get_the_terms, care e o funcție de bază și trece peste formatarea altor funcții alterate de tema de WP, de exemplu.

Sper că v-a fost util articolul! Și succes în implementarea soluției!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *