Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Returns the categories that are parent to a specific category.
- *
- * Need help customising the code for your need? Hire us on Codeable: http://bit.ly/codeable_aelia
- *
- * @param int category_id The ID of the category for which to retrieve the
- * parent categories
- * @return array An array of categories.
- * @author Aelia <support@aelia.co>
- */
- function aelia_get_parent_categories($category_id) {
- $parent_categories = array();
- $parent_categories_ids = get_ancestors($category_id, 'product_cat');
- foreach($parent_categories_ids as $category_id) {
- $category = get_term_by('id', $category_id, 'product_cat');
- $parent_categories[$category->slug] = $category->name;
- }
- return $parent_categories;
- }
- /**
- * Returns the categories to which a product belongs.
- *
- * @param WC_Product product A WooCommerce product.
- * @param bool return_raw_categories Indicates if the raw category data should
- * be return. When set to false, a simpler array with category slugs and names
- * is returned.
- * @return array An array of categories, with slugs as keys and category names
- * as values.
- * @author Aelia <support@aelia.co>
- */
- function aelia_get_product_categories($product, $return_raw_categories = false) {
- $result = array();
- $categories = wp_get_post_terms($product->id, 'product_cat');
- if(is_array($categories) && !$return_raw_categories) {
- $parent_categories = array();
- // Retrieve the parent categories of each category to which
- // the product is assigned directly
- foreach($categories as $category) {
- // Using array_merge(), we keep a list of parent categories
- // that doesn't include duplicates
- $parent_categories = array_merge($parent_categories, aelia_get_parent_categories($category->term_id));
- }
- // When we have the full list of parent categories, we can merge it with
- // the list of the product's direct categories, producing a single list
- $categories = array_merge($parent_categories, wp_list_pluck($categories, 'name', 'slug'));
- }
- return $categories;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement