es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excluya el producto actual y los productos destacados de WP_Query.

Estoy utilizando el siguiente código (sin las partes señaladas como “post_notin”) para consultar los productos mejor valorados con WordPress WooCommerce en la vista de un único producto. Necesito excluir la publicación actual y las publicaciones destacadas de la consulta. ¿Algún idea de cómo excluir ambos al mismo tiempo?

$the_query = new WP_Query( array(           
    // Ordenar por los productos mejor valorados
    'post_type'      => 'product',
    'post_status'    => 'publish',
    'posts_per_page' => '-1',            
    'orderby'        => 'meta_value_num',
    'order'          => 'desc',
    'meta_key'       => '_wc_average_rating',
    'post__not_in'   => wc_get_featured_product_ids(),
    'post__not_in'   => array( $post->ID )            
));
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para excluir tanto la entrada actual como las entradas destacadas de la consulta, puedes fusionar los dos arrays que contienen los ID utilizando la función array_merge(). El código actualizado se vería así:

    $productos_destacados_ids = wc_get_featured_product_ids(); // Obtener ID de productos destacados
    $id_producto_actual = get_the_ID(); // Obtener ID del producto actual
    
    $la_consulta = new WP_Query( array(
        'post_type'      => 'product',
        'post_status'    => 'publish',
        'posts_per_page' => '-1',
        'orderby'        => 'meta_value_num',
        'order'          => 'desc',
        'meta_key'       => '_wc_average_rating',
        'post__not_in'   => array_merge( $productos_destacados_ids, array( $id_producto_actual ) )
    ));
    

    Este código primero recupera los ID de los productos destacados y el ID del producto actual. Luego utiliza la función array_merge() para combinar los dos arrays en un solo array que contiene todos los ID a excluir. Finalmente, este array fusionado se pasa como valor del parámetro post__not_in en los argumentos de WP_Query.

Comments are closed.