Jigoshop + wp 3.4.2 kategória ne számolja bele az alkategória egyedeinek számát

Sziasztok!











Tegnap szembesültem azzal hogy valamiért egy kategóriánál a count érték nem megfelelő … picit számolgatás után rájöttem hogy az alkategória elemeit is bele számolja…





nem tudtam eldönteni hogy ez most normális mükődésnek számít de nekem nem volt logikus…











pl (admin->products>categories):











kategóriák:




  • a (10db - ténylegesen 2db product van benne)




  • b (6db)




  • c (2db)





    .





    .





    .











    igen kerek szemekkel néztem mi is van itt … egy kis keresgélés után láttam hogy a wp bevezetett egy tax_query változott => include_children … végül a megoldásom admin felületre:















    if (is_admin()) {



    add_filter(“request”, “hydro_products_filter_by_taxonomy_bugfix”);



    function hydro_products_filter_by_taxonomy_bugfix($query)



    {



    global $pagenow;



    if ($pagenow == “edit.php” && $query[‘post_type’] == “product” && isset($query[‘product_cat’])) {



    if (!$query[‘tax_query’]) {



    $query[‘tax_query’] = array();



    }



    $query[‘tax_query’][‘relation’] = “AND”;



    $tmp_query = array();



    $tmp_query[‘taxonomy’] = “product_cat”;



    $tmp_query[‘field’] = “slug”;



    $tmp_query[‘terms’] = $query[‘product_cat’];



    $tmp_query[‘operator’] = “IN”;



    $tmp_query[‘include_children’] = FALSE;



    $query[‘tax_query’][] = $tmp_query;



    }



    return $query;



    }



    add_filter(“get_terms_args”,“hydro_products_filter_select_count_bugfix”,10,2);



    function hydro_products_filter_select_count_bugfix($args,$taxonomies)



    {



    $found = false;



    foreach($taxonomies as $tax)



    {



    if($tax === “product_cat”)



    {



    $found = true;



    }



    }



    if($found === true)



    {



    $args[‘pad_counts’] = 0;



    }



    return $args;



    }



    }











    ezek után már jól fogja kezelni…











    pl (admin->products>categories):







    kategóriák:


  • a (2db)


  • b (6db)


  • c (2db)





    if (is_admin()) {





    add_filter(“request”, “hydro_products_filter_by_taxonomy_bugfix”);





    function hydro_products_filter_by_taxonomy_bugfix($query)





    {





    global $pagenow;





    if ($pagenow == “edit.php” && $query[‘post_type’] == “product” && isset($query[‘product_cat’])) {





    if (!$query[‘tax_query’]) {





    $query[‘tax_query’] = array();





    }





    $query[‘tax_query’][‘relation’] = “AND”;





    $tmp_query = array();





    $tmp_query[‘taxonomy’] = “product_cat”;





    $tmp_query[‘field’] = “slug”;





    $tmp_query[‘terms’] = $query[‘product_cat’];





    $tmp_query[‘operator’] = “IN”;





    $tmp_query[‘include_children’] = FALSE;





    $query[‘tax_query’][] = $tmp_query;





    }





    return $query;





    }





    add_filter(“get_terms_args”,“hydro_products_filter_select_count_bugfix”,10,2);





    function hydro_products_filter_select_count_bugfix($args,$taxonomies)





    {





    $found = false;





    foreach($taxonomies as $tax)





    {





    if($tax === “product_cat”)





    {





    $found = true;





    }





    }





    if($found === true)





    {





    $args[‘pad_counts’] = 0;





    }





    return $args;





    }





    }

















    ezek után már jól fogja kezelni…

















    pl (admin->products>categories):











    kategóriák:




  • a (2db)




  • b (6db)




  • c (2db)

egy kis javitas :slight_smile:

















hydro_products_filter_by_taxonomy_bugfix





'sfunctionben a legelejere bele kell tenni egy if-et if(!isset($query['s']) && !empty($query['s'])){ …





a kereses miatt van, ha nem teszed bele akkor az adminon a kereses nem fog talalatot hozni …

Ujra itt… nem tudom hogy ez még mindig abból a problémából ered csak sejtem azért ide irom















add_filter(“loop_shop_tax_query”,“hydro_jigo_subcategorys_bugfix”);



function hydro_jigo_subcategorys_bugfix($request)



{



// ha van benne / vonal akkor alkategoria lett meghivva csak a jigoshop nem tori szet … :frowning:



if(strpos($request[0][‘terms’],"/") !== false)



{



$request[0][‘terms’] = explode("/",$request[0][‘terms’]);



$request[0][‘terms’] = array_reverse($request[0][‘terms’]);



}



return $request;



}







a történet lényege hogyha a permalinked igy van beallitva PRODUCTCATNAME[jigoshop adminon lehet beallitani]/categoryname…/categoryname…



ha már 2 alkategóriád van akkor 404-et kapsz mivel a jigo az url-t adja át a wpnek pl: kategoriak/enkategoriam/subkategoria … ekkor a terms = enkategoriam/subkategoria de mivel az a hook ami meghivja ezt a filter az egy request hook es igazaból itt most a tax_query-t állítjuk be mivel a wp több terms esetén tömböt vár … a reverse is kell különben az url első kategóriájának termékeit fogod látni…





add_filter(“loop_shop_tax_query”,“hydro_jigo_subcategorys_bugfix”);





function hydro_jigo_subcategorys_bugfix($request)





{





// ha van benne / vonal akkor alkategoria lett meghivva csak a jigoshop nem tori szet … :frowning:





if(strpos($request[0][‘terms’],"/") !== false)





{





$request[0][‘terms’] = explode("/",$request[0][‘terms’]);





$request[0][‘terms’] = array_reverse($request[0][‘terms’]);





}





return $request;





}











a történet lényege hogyha a permalinked igy van beallitva PRODUCTCATNAME[jigoshop adminon lehet beallitani]/categoryname…/categoryname…





ha már 2 alkategóriád van akkor 404-et kapsz mivel a jigo az url-t adja át a wpnek pl: kategoriak/enkategoriam/subkategoria … ekkor a terms = enkategoriam/subkategoria de mivel az a hook ami meghivja ezt a filter az egy request hook es igazaból itt most a tax_query-t állítjuk be mivel a wp több terms esetén tömböt vár … a reverse is kell különben az url első kategóriájának termékeit fogod látni…