Skip to content

Instantly share code, notes, and snippets.

@daliborgogic
Created February 6, 2018 13:41
Show Gist options
  • Save daliborgogic/371de1276787f60391986cc5c1c0214e to your computer and use it in GitHub Desktop.
Save daliborgogic/371de1276787f60391986cc5c1c0214e to your computer and use it in GitHub Desktop.
<?php
function alfa_where( $where) {
$where = str_replace("meta_key = 'tabela_$", "meta_key LIKE 'tabela_%", $where);
return $where;
}
add_filter('posts_where', 'alfa_where');
add_filter( 'rest_query_vars', function ($valid_vars) {
return array_merge($valid_vars, array(array(
'montaza',
'viljuska',
'obloga',
'tip',
'aplikacije',
'precnikMin',
'precnikMax',
'visinaMin',
'visinaMax',
'nosivostMin',
'nosivostMax',
'sifra'
),'meta_query'));
});
add_filter('rest_tockovi_query', function ($args, $request) {
$montaza = $request->get_param('montaza');
$viljuska = $request->get_param('viljuska');
$obloga = $request->get_param('obloga');
$tip = $request->get_param('tip');
$aplikacije = $request->get_param('aplikacije');
// Repeater tabela
$precnikMin = $request->get_param('precnikMin');
$precnikMax = $request->get_param('precnikMax');
$nosivostMin = $request->get_param('nosivostMin');
$nosivostMax = $request->get_param('nosivostMax');
$visinaMin = $request->get_param('visinaMin');
$visinaMax = $request->get_param('visinaMax');
$sifra = $request->get_param('sifra');
$keyAplikacije = array('key' => 'aplikacije', 'value' => '"'.$aplikacije.'"', 'compare' => 'LIKE');
$keyMontaza = array('key' => 'montaza', 'value' => $montaza, 'compare' => 'LIKE');
$keyTip = array('key' => 'tip', 'value' => $tip, 'compare' => 'LIKE');
$keyObloga = array('key' => 'obloga', 'value' => $obloga, 'compare' => 'LIKE');
$keyViljuska = array('key' => 'viljuska', 'value' => $viljuska, 'compare' => 'LIKE');
$keySifra = array('key' => 'tabela_$_sifra','value' => $sifra, 'compare' => 'IN');
$keyPrecnik = array('type'=> 'NUMERIC','key' => 'tabela_$_precnik','value' => array($precnikMin, $precnikMax),'compare' => 'BETWEEN');
$keyNosivost = array('type'=> 'NUMERIC','key' => 'tabela_$_nosivost','value' => array($nosivostMin, $nosivostMax),'compare' => 'BETWEEN');
$keyVisina = array('type'=> 'NUMERIC','key' => 'tabela_$_visina','value' => array($visinaMin, $visinaMax),'compare' => 'BETWEEN');
$args['meta_query'] = array(
'suppress_filters' => FALSE,
'numberposts' => -1,
'relation' => 'AND',
);
if (!empty($aplikacije)) {
$args['meta_query'][] = $keyAplikacije;
}
if (!empty($montaza)) {
$args['meta_query'][] = $keyMontaza;
}
if (!empty($tip)) {
$args['meta_query'][] = $keyTip;
}
if (!empty($viljuska)) {
$args['meta_query'][] = $keyViljuska;
}
if (!empty($obloga)) {
$args['meta_query'][] = $keyObloga;
}
if (!empty($sifra)) {
$args['meta_query'][] = $keySifra;
}
if (!empty($precnikMin && $precnikMax)) {
$args['meta_query'][] = $keyPrecnik;
}
if (!empty($nosivostMin && $nosivostMax)) {
$args['meta_query'][] = $keyNosivost;
}
if (!empty($visinaMin && $visinaMax)) {
$args['meta_query'][] = $keyVisina;
}
return $args;
}, 10, 2);
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment