Vinculación para enumerar todos los productos reservables de WooCommerce creados por autores específicos y con reservas de personas habilitadas. Digamos que quiero productos con posibilidad de reserva para 50 personas por author_id=15;
function custom_query($q){
$people = get_query_var('people');
$meta_query = (array) $q->get('meta_query');
$q->set('author__in', [15]);
$meta_query[] = array(
"relation" => "AND",
array(
"key"=> "_wc_booking_min_persons_group",
"value"=> $people,
"compare" => "<=",
'type' => 'BINARY'
),
array(
"key"=> "_wc_booking_max_persons_group",
"value"=> $people,
"compare" => ">=",
'type' => 'BINARY'
)
);
$q->set('meta_query', $meta_query);
}
add_action('woocommerce_product_query', 'custom_query');
Recibo todas las publicaciones/productos por author_id 15. Solo deben ser productos por author_id = 15 y dentro del rango _wc_booking_min_persons_group _wc_booking_max_persons_group. ¡Alguien puede ayudar!
Solución
Pude resolverlo de la siguiente manera. El tipo WP_Query proyecta las columnas antes de la comparación de acuerdo con el type
. La meta_query actualizada se proporciona a continuación. Esto funciona aunque meta_value
se almacena como una cadena. ¡Me pregunto por qué estaba usando Binario!
$meta_query[] = array(
"relation" => "AND",
array(
"key"=> "_wc_booking_min_persons_group",
"value"=> (int) $people,
"compare" => "<=",
'type' => 'numeric'
),
array(
"key"=> "_wc_booking_max_persons_group",
"value"=> (int) $people,
"compare" => ">=",
'type' => 'numeric'
)
);
.