Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Фильтровать если значение меньше или равно
5ответ(ов) в теме
Konstantin.T
не в сети 5 лет
На сайте с 14.03.2016
Участник
1
14:03

Подскажите как дополнить запрос к БД чтоб например по полю "цена за обучение" выводились пользователи у которых это значение меньше или равно полученному в Get запросе, а не равно этому значению.

беру значение так:

$_GET["cena_obucheniya_55"]

как запросить что то типо этой логики:

 cena_obucheniya_55.meta_value  <=  $_GET["cena_obucheniya_55"]

0
Вова (Otshelnik-Fm)
не в сети 5 дней
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
2
14:14

Тему перенес в подходящий форум.
Вопросы кастомизаций не являются проблемой в работе profile search

1
Konstantin.T
не в сети 5 лет
На сайте с 14.03.2016
Участник
3
13:13

Сделал так:


$cnaoah = $_GET["cena_obucheniya_55"];
$value = $wpdb->get_row("SELECT meta_key,meta_value FROM ".$wpdb->prefix."usermeta WHERE meta_key LIKE '$name' AND meta_value LIKE '%$_GET[$name]%'");
$n = 'metas_'.$name;
$comp = (is_serialized($value->meta_value))? "$n.meta_value LIKE '%$_GET[$name]%'": "$n.meta_value='$_GET[$name]'";

$query->query['join'][] = "INNER JOIN $wpdb->usermeta AS $n ON users.ID=$n.user_id"; 
                    
if ($n == 'metas_cena_obucheniya_55'){
    $query->query['where'][] = "($n.meta_key LIKE 'cena_obucheniya%' AND $n.meta_value query['group'] = 'users.ID';
}
else
{
    $query->query['where'][] = "($n.meta_key='$value->meta_key' AND $comp)"; 
}

выбор сделал по всем полям начинающимся на cena_obucheniya потому что у меня у каждого пользователя есть несколько полей (cena_obucheniya_55, cena_obucheniya_19, cena_obucheniya_44)

подскажите пожалуйста что можно переделать, укажите на ошибки, буду рад.

0
Вова (Otshelnik-Fm)
не в сети 5 дней
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
4
13:39

Вначале $cnaoah определили. Но потом нигде не использовали...
$name присоединяете к 'metas_' - откуда $name?

Значит это просто фрагмент кода

Предположу что $_GET["cena_obucheniya_55"] - просто число? Значит надо проверять что в запросе именно число и пришло.. А то мало ли - малолетние хакеры понашлют туда свои данные.

0
Konstantin.T
не в сети 5 лет
На сайте с 14.03.2016
Участник
5
14:02

Вначале $cnaoah определили. Но потом нигде не использовали...

что то пошло не так, должно быть вот так:

$cnaoah = $_GET["cena_obucheniya_55"];
$value = $wpdb->get_row("SELECT meta_key,meta_value FROM ".$wpdb->prefix."usermeta WHERE meta_key LIKE '$name' AND meta_value LIKE '%$_GET[$name]%'");
$n = 'metas_'.$name;
$comp = (is_serialized($value->meta_value))? "$n.meta_value LIKE '%$_GET[$name]%'": "$n.meta_value='$_GET[$name]'";

$query->query['join'][] = "INNER JOIN $wpdb->usermeta AS $n ON users.ID=$n.user_id"; 
                    
if ($n == 'metas_cena_obucheniya_55'){
    $query->query['where'][] = "($n.meta_key LIKE 'cena_45%' AND $n.meta_value <= $cnaoah)";
    $query->query['group'] = 'users.ID';
}
else
{
    $query->query['where'][] = "($n.meta_key='$value->meta_key' AND $comp)"; 
}

теперь вроде правильно, $cnaoah используется.

$name присоединяете к 'metas_' - откуда $name?

это уже было в коде изначально в wp-content/wp-recall/add-on/profile-search/index.php

$name = $custom_field['prof_fields'];

т.е. это meta_key полей профиля

Значит это просто фрагмент кода

да это фрагмент кода из wp-content/wp-recall/add-on/profile-search/index.php

Предположу что $_GET["cena_obucheniya_55"] - просто число? Значит надо проверять что в запросе именно число и пришло.. А то мало ли - малолетние хакеры понашлют туда свои данные.

сделаю спасибо за подсказку

0
Тема закрыта. Публикация новых сообщений запрещена.