skip to Main Content
+30-6944453971 info [a] selidamou.gr

Filter by product TAGS and not search by product TAG

Ας μπούμε κατευθείαν στο θέμα, όπως συνήθως κάνω στα τεχνικά άρθρα για το wordpress. Το πρόβλημα που έπρεπε να λυθεί εδώ ήταν να βρεθεί ένας εύκολος τρόπος για τον Administrator του woocommerce, να μπορεί να κάνει αναζήτηση ή με κάποιο τρόπο να βρει ένα προϊόν σύμφωνα με την ετικέτα του. Σε ένα πελάτη μου στην ετικέτα του προϊόντος, περνούσε ο προμηθευτής και είναι χρήσιμο στη τιμολογιακή πολιτική να μπορείς να κάνεις αναζήτηση για έναν προμηθευτή.

 

Μετά από αρκετή έρευνα και δοκιμές στη εγκατάσταση woocommerce που είχε ο πελάτης δεν έπαιρνε την προσθήκη του TAG στην αναζήτηση προϊόντων μέσα από το is_search() function, οπότε έπρεπε να βρεθεί διαφορετικός τρόπος προσέγγισης. Η επιλογή που έκανα ήταν να προσθέσω ένα filter με τα TAGS/προμηθευτές, παρόμοιο με το filter που υπάρχει ήδη στο woo με τις κατηγορίες. Το παραπάνω μπορεί να γίνει με δύο διαφορετικούς τρόπους. Μετά από δοκιμές κατέληξα ότι ο δεύτερος είναι ελάχιστα ταχύτερος.

πρώτος τρόπος προθήκης φίλτρου με την οντότητα TAG (filter by product TAGS)

/**
* @snippet Show Custom Filter @ WooCommerce Products Admin
* @sourcecode https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag
* @author Vasilis kartsios
* @compatible Woo 3.5.3
*/

add_action('restrict_manage_posts', 'product_tags_sorting');
function product_tags_sorting() {
global $typenow;

$taxonomy = 'product_tag';

if ( $typenow == 'product' ) {


$selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
$info_taxonomy = get_taxonomy($taxonomy);

wp_dropdown_categories(array(
'show_option_all' => __("Αναζήτηση με προμηθευτή2"),
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => $selected,
'show_count' => true,
'hide_empty' => true,
));
};
}

add_action('parse_query', 'product_tags_sorting_query');
function product_tags_sorting_query($query) {
global $pagenow;

$taxonomy = 'product_tag';

$q_vars = &$query->query_vars;
if ( $pagenow == 'edit.php' && isset($q_vars['post_type']) && $q_vars['post_type'] == 'product' && isset($q_vars[$taxonomy]) && is_numeric($q_vars[$taxonomy]) && $q_vars[$taxonomy] != 0 ) {
$term = get_term_by('id', $q_vars[$taxonomy], $taxonomy);
$q_vars[$taxonomy] = $term->slug;
}
}

δεύτερος τρόπος προθήκης φίλτρου με την οντότητα TAG (filter by product TAGS)

/**
* @snippet Show Custom Filter @ WooCommerce Products Admin
* @sourcecode https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag
* @author Vasilis kartsios
* @compatible Woo 3.5.3
*/

add_filter( 'woocommerce_product_filters', 'bbloomer_filter_by_custom_taxonomy_dashboard_products' );

function bbloomer_filter_by_custom_taxonomy_dashboard_products( $output ) {

global $wp_query;

$output .= wc_product_dropdown_categories( array(
'show_option_none' => 'Αναζήτηση με προμηθευτή',
'taxonomy' => 'product_tag',
'name' => 'product_tag',
'selected' => isset( $wp_query->query_vars['product_tag'] ) ? $wp_query->query_vars['product_tag'] : '',
) );

return $output;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top
×Close search
Search