//работа с аргументами
function catArgs( $title ){
$args = array(
'post_type' => 'cats',
'meta_key' => 'родительская_категория',
'meta_value' => $title,
'posts_per_page' => -1
);
return $args;
}
function groupArgs( $title ){
$args = array(
'post_type' => 'warehouse',
'posts_per_page' => -1,
'meta_key' => 'группа',
'meta_value' => $title,
);
return $args;
}
//работа с аргументами
//работа с запросами
function getCats( $title ){
$args = catArgs( $title );
$pcat = get_posts( $args );
return $pcat;
}
function getGroup( $title ){
$args = groupArgs( $title );
$pgroup = get_posts( $args );
return $pgroup;
}
//работа с запросами
//работа с результатами запроса
function sortDataByGroup( $title, $data ){
$filtered_posts = [];
$title = mb_strtolower($title);
foreach( $data as $product ){
$group = mb_strtolower($product->группа);
if ( trim($title) == trim($group) ){
$filtered_posts[] = $product;
}
}
return $filtered_posts;
}
//работа с результатами запроса
//если нет запроса через фильтр
//очень много вложенностей
//проблемы с читабельностью кода
//плохая оптимизация кода
//если нет запроса через фильтр
if( empty($_GET) ){
//первоначальный запрос на получения подкатегорий
$pcats = getCats( $post_title );
$prIndex = 0;
//если есть подкатегории
if( count( $pcats ) > 0 ){
//проходимя по подкатегориям
foreach( $pcats as $pcat ){
$sortedProducts = sortDataByGroup( $pcat->post_title, $productsAll->posts );
if( !empty( $sortedProducts ) ){
$pr = createUniqFromObjHidden( $sortedProducts );
//если есть товары (то он автоматом не исчет подкатегории)
//работает например Ковры->Турция и выдает коллекции в виде секции
//которые содержат уже группы товаров в зависимости от дизайна
//но с данной коллекции
if( !empty($pr) ){
echo '
';
echo $pr['html'];
$prIndex++;
}
}else{
//echo $pcat->post_title . '
';
//пытаемся найти подкатегории подкатегории
$p2cats = getCats( $pcat->post_title );
if( count( $p2cats ) > 0 ){
$sortedProducts = [];
foreach( $p2cats as $p2cat ){
$sortedProducts = sortDataByGroup( $p2cat->post_title, $productsAll->posts );
}
if( !empty( $sortedProducts ) ){
$pr = createUniqFromObjHidden( $sortedProducts );
//если есть товары (то он автоматом не исчет подкатегории)
//работает например Ковры->Турция и выдает коллекции в виде секции
//которые содержат уже группы товаров в зависимости от дизайна
//но с данной коллекции
if( !empty($pr) ){
echo '
';
echo $pr['html'];
$prIndex++;
}
}else{
$newData = [];
foreach( $p2cats as $p2cat ){
// echo $p2cat->post_title . '!
';
$sortedProducts = sortDataByGroup( $p2cat->post_title, $productsAll->posts );
if(!empty($sortedProducts)){
$newData[] = $sortedProducts[0];
}
}
if( !empty( $newData ) ){
$pr2 = createUniqFromObjHidden( $newData );
//если есть товары (то он автоматом не исчет подкатегории)
//работает например Ковры->Турция и выдает коллекции в виде секции
//которые содержат уже группы товаров в зависимости от дизайна
//но с данной коллекции
if( !empty($pr2) ){
echo '
';
echo $pr2['html'];
$prIndex++;
}
}
}
}else{
//echo '
нет подкатегорий';
}
}
}
//если нет товаров, то пытается найти подкатегории
//работает например в глобальной категории Ковры и выдает секции со страннами
//которые содержат уже коллекции бекз картинок
if( $prIndex < 1 ){
foreach( $pcats as $pcat ){
$podCats = getCats( $pcat->post_title );
if( !empty( $podCats ) ){
$podCats = filterPodCatsBasedOnProducts($podCats, $productsAll);
if( !empty($podCats) ){
echo '
';
$render = creatPodCatCards($podCats);
echo $render;
}
}
}
}
}else{
//тут мы ищем товары категории в каторой находимся
$products = sortDataByGroup( $post_title, $productsAll->posts );
//
//если нет товаров данной категории
if( count($products) < 1 ){
echo '
Тут пока нет товаров
';
}else{
$pr = createUniqFromObj( $products );
echo $pr['html'];
}
}
}else{
//сценарий когда воспользовались фильтром
if(!isset($_GET['product_page'])){
// $args_filtered = array(
// 'post_type' => 'warehouse',
// 'posts_per_page' => -1,
// 'meta_query' => array(
// 'relation' => 'AND',
// )
// );
// foreach( $_GET as $k => $f ){
// $mq = [];
// $mq['key'] = $k;
// $mq['value'] = $f;
// //
// $args_filtered['meta_query'][] = $mq;
// }
// //
// $products = get_posts($args_filtered);
// $vi = count( $products );
// //
// if($vi > 0){
// $pr = createUniqFromObj( $products );
// }
}else{
$args2 = array(
'post_type' => 'cats',
'meta_key' => 'родительская_категория',
'meta_value' => $post_title,
'posts_per_page' => -1
);
$pcats = get_posts($args2);
foreach( $pcats as $pc ){
$args3 = array(
'post_type' => 'warehouse',
'posts_per_page' => 4,
'meta_key' => 'группа',
'meta_value' => $pc->post_title,
);
$products = get_posts($args3);
$vi = 0;
foreach( $products as $p ){
//
$product_field = get_fields( $p->ID );
//
unset( $product_field['оптимизированные_изображения'], $product_field['id'], $product_field['артикул'], $product_field['наименование'],$product_field['наименование'], $product_field['описание'], $product_field['картинки'], $product_field['код_цвета2'], $product_field['код_цвета1'], $product_field['основной_поставщик'] );
//
$filter_fields[] = $product_field;
//
$vi++;
}
if($vi > 0){
$si = 0;
echo '
';
//
$pr = createUniqFromObj( $products );
//
if( $si < 1){
echo '
Тут пока нет товаров
';
}
echo '
';
}else{
$args3 = array(
'post_type' => 'cats',
'posts_per_page' => -1,
'meta_key' => 'родительская_категория',
'meta_value' => $pc->post_title,
);
$products = get_posts($args3);
//
$vi = 0;
foreach( $products as $p ){
//
$product_field = get_fields( $p->ID );
//
unset( $product_field['оптимизированные_изображения'], $product_field['id'], $product_field['артикул'], $product_field['наименование'],$product_field['наименование'], $product_field['описание'], $product_field['картинки'], $product_field['код_цвета2'], $product_field['код_цвета1'], $product_field['основной_поставщик'] );
//
$filter_fields[] = $product_field;
//
$vi++;
}
//
if($vi > 0){
$si = 0;
$em_c = 0;
foreach( $products as $p ){
$pid = $p->ID;
$si++;
$args_end = array(
'post_type' => 'warehouse',
'posts_per_page' => -1,
'meta_key' => 'группа',
'meta_value' => $p->post_title,
);
$products_count = count(get_posts($args_end));
if( $products_count > 0 ){
$em_c++;
}
}
//
if($em_c > 0){
echo '
';
$pr = createUniqFromObj( $products );
}
if( $pr < 1){
echo '
Тут пока нет товаров
';
}
echo '
';
}
}
}
//
//
//
$current_page = $_GET['product_page'] ?? 1;
$args = array(
'post_type' => 'warehouse',
'posts_per_page' => -1,
'meta_key' => 'группа',
'meta_value' => $post_title,
'paged'=> $current_page,
);
//
$products = get_posts($args);
//
$si = 0;
$pr = createUniqFromObj( $products );
if( $pr < 1 ){
echo '
Тут пока нет товаров
';
}
}
}
?>