/** * list of vendors * * @param $atts shortcode attributs */ public function wcmp_show_vendorslist($atts) { global $WCMp; $vendors_available = false; $get_all_vendors = array(); $select_html = ''; extract(shortcode_atts(array('orderby' => 'registered', 'order' => 'ASC'), $atts)); $vendors = ''; $vendor_sort_type = ''; if (isset($_GET['vendor_sort_type'])) { if ($_GET['vendor_sort_type'] == 'category') { $vendors_ids = array(); $vendor_sort_type = $_GET['vendor_sort_type']; $selected_category = $_GET['vendor_sort_category']; $args = array('post_type' => 'product', 'tax_query' => array(array('taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $selected_category))); $wp_obj = new WP_Query($args); $sorted_products = $wp_obj->posts; if (isset($sorted_products) && !empty($sorted_products)) { foreach ($sorted_products as $sorted_product) { $vendor_obj = get_wcmp_product_vendors($sorted_product->ID); if (isset($vendor_obj) && !empty($vendor_obj)) { if (!in_array($vendor_obj->id, $vendors_ids)) { $vendors_ids[] = $vendor_obj->id; $get_all_vendors[] = new WCMp_Vendor($vendor_obj->id); $vendors_available = true; } } } } } else { $vendor_sort_type = $_GET['vendor_sort_type']; $orderby = $vendor_sort_type; $order = 'ASC'; } } if (!$vendors_available) { $get_all_vendors = get_wcmp_vendors(array('orderby' => $orderby, 'order' => $order)); } $vendors .= '<div class="vendor_list">'; $vendors .= '<form name="vendor_sort" method="get" ><div class="vendor_sort">'; $vendors .= '<select class="select short" id="vendor_sort_type" name="vendor_sort_type">'; if ($vendor_sort_type) { if ($vendor_sort_type == 'registered') { $option = '<option selected value="registered">' . __("By date", $WCMp->text_domain) . '</option><option value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } else { if ($vendor_sort_type == 'name') { $option = '<option value="registered">' . __("By date", $WCMp->text_domain) . '</option><option selected value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } else { if ($vendor_sort_type == 'category') { $option = '<option value="registered">' . __("By date", $WCMp->text_domain) . '</option><option value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option selected value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } else { $option = '<option value="registered">' . __("By date", $WCMp->text_domain) . '</option><option value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } } } } else { if ($orderby == 'registered') { $option = '<option selected value="registered">' . __("By date", $WCMp->text_domain) . '</option><option value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } else { if ($orderby == 'name') { $option = '<option value="registered">' . __("By date", $WCMp->text_domain) . '</option><option selected value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } else { if ($vendor_sort_type == 'category') { $option = '<option value="registered">' . __("By date", $WCMp->text_domain) . '</option><option value="name">' . __("By Alphabetically", $WCMp->text_domain) . '</option><option value="category">' . __("By Category", $WCMp->text_domain) . '</option>'; } } } } if (isset($_GET['vendor_sort_type'])) { if ($_GET['vendor_sort_type'] == 'category') { $category_terms = get_terms('product_cat'); $select_html = '   <select class="select" id="vendor_sort_category" name="vendor_sort_category">'; foreach ($category_terms as $terms) { if (isset($_GET['vendor_sort_category'])) { if ($_GET['vendor_sort_category'] == $terms->term_id) { $select_html .= '<option selected value="' . $terms->term_id . '">' . $terms->name . '</option>'; } else { $select_html .= '<option value="' . $terms->term_id . '">' . $terms->name . '</option>'; } } } $select_html .= '</select>'; } } $vendors .= $option . '</select>' . $select_html; $vendors .= ' <input type="submit" value="' . __("Sort", $WCMp->text_domain) . '" />'; $vendors .= '</div>'; $vendors .= '</form>'; $get_blocked = wcmp_get_all_blocked_vendors(); $get_block_array = array(); if (!empty($get_blocked)) { foreach ($get_blocked as $get_block) { $get_block_array[] = (int) $get_block->id; } } if (isset($get_all_vendors) && !empty($get_all_vendors)) { foreach ($get_all_vendors as $get_vendor) { if (in_array($get_vendor->id, $get_block_array)) { continue; } if (!$get_vendor->image) { $get_vendor->image = $WCMp->plugin_url . 'assets/images/WP-stdavatar.png'; } $vendors .= '<div class="sorted_vendors" style="display:inline-block; margin-right:10%;"> <center> <a href="' . $get_vendor->permalink . '"><img width="125" class="vendor_img" src="' . $get_vendor->image . '" id="vendor_image_display"></a><br /> <a href="' . $get_vendor->permalink . '" class="button">' . $get_vendor->user_data->display_name . '</a> <br /><br /> </center> </div>'; } $vendors .= '</div>'; } return $vendors; }
/** * add tax query on product page * @return void */ function convert_business_id_to_taxonomy_term_in_query($query) { global $pagenow; if (is_admin()) { if (isset($_GET['post_type']) && $_GET['post_type'] == 'product' && $pagenow == 'edit.php') { $current_user_id = get_current_user_id(); $current_user = get_user_by('id', $current_user_id); if (!in_array('dc_vendor', $current_user->roles)) { return $query; } $term_id = get_user_meta($current_user_id, '_vendor_term_id', true); $taxquery = array(array('taxonomy' => 'dc_vendor_shop', 'field' => 'id', 'terms' => array($term_id), 'operator' => 'IN')); $query->set('tax_query', $taxquery); } } else { if (isset($query->query['post_type']) && $query->query['post_type'] == 'product') { $get_block_array = array(); $get_blocked = wcmp_get_all_blocked_vendors(); if (!empty($get_blocked)) { foreach ($get_blocked as $get_block) { $get_block_array[] = (int) $get_block->term_id; } $taxquery = array(array('taxonomy' => 'dc_vendor_shop', 'field' => 'id', 'terms' => $get_block_array, 'operator' => 'NOT IN')); $query->set('tax_query', $taxquery); } } } return $query; }