Фильтр для страницы ковров
Выбирите город
г. Астана г. Атырау г. Караганда г. Шымкент
Выбирите магазин
Улица Жасталап, 33а Улица Аргынбекова, 243/3 проспект Республики, 9 Проспект Бухар-жырау, 86/7 Улица Туркестан, 10 Улица Кайым Мухамедханов, 5 Шоссе Алаш, 13
Выбирите размер
180 x 280 D 300X400 D 100 X 150 D 150 X 230 D 80X150 250X500 400X500 400X600 100x200 200X400 250X350 250X400 300X400 300X500 150X230 200X300 200X290 120X170 100X200 160X230 170X230 80 x 150 D 250x350 250x400 250x500 300x400 300x500 400x500 400x600 200x300 200x400 150X230 oval 150x230 80x150 400x700 300x600 350x500 400x400 240x500 350x700 350x600 240x400 240x340 300X600 400X700 350X600 240X500 80x150 D 200x400 D 350x500 D 350x400 D 400x500 D 400x600 D 400x700 D 400x800 D 100x200 D 150x230 D 250x500 D 250x400 D 250x350 D 300x600 D 300x500 D 300x400 D 200x300 D 120x170 D 400x400 D 300X300 400X800 350X500 200X200 250 x 400 D 400X500 D 150X230 D 200X300 D 250X350 D 200X400 D 250X400 D 250X500 D 300X500 D 150X230 O 300X600 D 350X700 100X200 D 250 x 350 D 150 x 230 D 200 x 200 K 200 x 300 D 300 x 400 D 100 x 200 D 200 x 400 D 100 X 200 D 120 X 170 D 160Х240 200Х300 240Х350 300Х400 300X500 300Х500 100X150 50X80 400X400 250 X 350 D 150X2500 100X2500 100X160 300X390 80X2500 240X350 160X2500 240X340 400x800 350x400 300x300 240X400 160x240 240x350 160X160 60X90
Выбирите цвет
Коричневый Темно-серый Сине-зеленый Оливковый Кремовый,Серый Мультиколор Синий,Серый Серый,Коричневый Серый,Светло-серый Кремовый,Светло-серый CREAM/HB LIGHT GREY CREAM/HB.L.GREY Серый Кремовый Бежевый Коричневый,Серый Серый,Светло-синий Серый,Мультиколор Белый,Желтый Серый,Оранжевый Фиолетовый,Серый Бежевый,Оливковый Бежевый,Серый Белый,Серый Синий Кремовый,Золото Темно-серый,Золото Серый,Синий Бежевый,Черный Кремовый,Синий Бежевый,Золотой Бежевый,Кремовый Синий,Кремовый Бежевый,Розовый Бежевый, Бежевый Бежевый, Синий HB LIGHT GREY/CREAM Кремовый, синий Коричневый Бежевый,Песочный CREAM/HB.LIGHT GREY Серо Cиний Серо Синий Марсела Винный Фиолетовый,Голубой Черный,Белый Розовый,Белый Ментоловый Розовый Синий,Бежевый Белый,Коричневый Кремовый,Красный Серый,Кремовый Серый,Голубой Золотисто-кремовый Серый,Антрацит Кремовый,Оранжевый Кремовый,Голубой Кремовый, коричневый Серый, черный Кремовый, коричневый Зеленый Белый Синий,Коричневый Мультколор Бордо Серый,Черный Кремовый,Коричневый Светло-коричневый Темно-Бежевый Бежевый,Коричневый Синий,Голубой
//работа с аргументами
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 '
Тут пока нет товаров
';
}
}
}
?>