If I am reading your question right, you need AND
not OR
for the meta query relation
'relation' => 'AND',
I don’t see where you’ve set the $product_*
values either. You should be using $_GET['product_color']
(etc), but you need to sanitize that user supplied data. I would use a “whitelist” technique if it were me:
$whitelist = array(
'red' => 'red',
'blue' => 'blue'
);
if (isset($_GET['product_color']) && isset($whitelist[$_GET['product_color']])) {
$product_color = $whitelist[$_GET['product_color']];
}
echo $product_color;
If this is a secondary query you should be good, if this is the main query on the page you should be using pre_get_posts
.