Mostrar en una página todos los productos por debajo de un precio específico en Woocommerce

3 minutos de lectura

photo
anindya goel

Tengo una tienda Woocommerce con más de 1000 productos. Me gustaría que todos los productos que tienen un precio por debajo 999 debe mostrarse en una página separada, para que pueda etiquetar esa página en mi menú.

¿Es posible?

  • He editado mi pregunta. Amablemente ayuda si tiene una solución para esto.

    – Anindya Goel

    13 de agosto de 2018 a las 20:19

Mostrar en una pagina todos los productos por debajo de
LoicTheAztec

Actualizar: (agregado 'type' => 'DECIMAL', al meta_query formación)

Esto se puede hacer usando Código abreviado de Woocommerce [products] para ser utilizado en una página, con el siguiente código adicional (que agregará la posibilidad de definir un precio para comparar a través de un argumento existente):

add_filter( 'woocommerce_shortcode_products_query', 'products_based_on_price', 10, 3 );
function products_based_on_price( $query_args, $atts, $loop_name ) {
    if( ! ( isset($atts['class']) && ! empty($atts['class']) ) )
        return $query_args;

    if (strpos($atts['class'], 'below-') !== false) {
        $compare="<";
        $slug    = 'below-';
    } elseif (strpos($atts['class'], 'above-') !== false) {
        $compare="<";
        $slug    = 'above-';
    }

    if( isset($compare) ) {
        $query_args['meta_query'][] = array(
            'key'     => '_price',
            'value'   => (float) str_replace($slug, '', $atts['class']),
            'type'    => 'DECIMAL',
            'compare' => $compare,
        );
    }
    return $query_args;
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.


##USO:

Aquí usamos lo que no se usa class argumento para pasar el precio y el operador de comparación.

1) MOSTRAR PRODUCTOS POR DEBAJO DE UNA CANTIDAD ESPECÍFICA (TU CASO)

Pegará el siguiente ejemplo de shortcode con as class valor del argumento below-999 (para productos que tengan un precio inferior a 999):

[products limit="16" paginate="true" columns="4" class="below-999"]

El editor de contenido de texto de la página de wordpress:

ingrese la descripción de la imagen aquí

Conseguirás:

ingrese la descripción de la imagen aquí

2) MOSTRAR PRODUCTOS POR ENCIMA DE UNA CANTIDAD ESPECÍFICA

Pegará el siguiente ejemplo de shortcode con as class valor del argumento above-50 (para productos que tienen un precio superior 50):

[products limit="16" paginate="true" columns="4" class="above-50"]

Argumentos y configuraciones de shortcode disponibles: Documentación de códigos cortos de Woocommerce

  • Ok, gracias, lo intentaré y comentaré aquí. Muchas gracias 🙂

    – Anindya Goel

    13 de agosto de 2018 a las 21:51

  • @AnindyaGoel Esto realmente funciona, y los códigos abreviados de Woocommerce tienen muchos argumentos diferentes disponibles para hacerlo como tú quieres.

    – LoicTheAztec

    13 de agosto de 2018 a las 21:53


  • Hola, probé el código mencionado pero muestra todos los productos en mi tienda.

    – Anindya Goel

    14 de agosto de 2018 a las 8:34

  • [Update]- Acabo de encontrar un error en la codificación de la función, el operador se escribió incorrectamente para la declaración condicional inferior. Debería ser “>” en el caso de la condición A continuación en la codificación mencionada anteriormente. Bueno, gracias de nuevo por la ayuda 🙂

    – Anindya Goel

    14 de agosto de 2018 a las 8:41

  • Hola, hay un problema más con eso, cuando escribo class=”below-999″ no muestra ningún producto. Y cuando solo escribo “9” en lugar de “999”, muestra productos por debajo de 999. ¿Por qué sucede? Para su información, la moneda de mi tienda es INR (₹).

    – Anindya Goel

    14 de agosto de 2018 a las 8:47

  • Crear una nueva plantilla de página
  • Crear una nueva página, asignar una nueva plantilla de página
  • En la parte superior del código de plantilla de página (o usando filtros), use WP_query para consultar sus productos

Ver:

$query = new \WP_Query(
    [
      'posts_per_page' => -1,
      'post_type' => 'product',
      'meta_key' => '_price',
      'meta_value' => 999,
      'meta_compare' => '<',
      'meta_type' => 'NUMERIC'
    ]);
  • Luego puede usar un bucle while o foreach en $query->posts para mostrar tu publicación

  • No sé cómo publicar esta consulta, por favor explique.

    – Anindya Goel

    13 de agosto de 2018 a las 20:16


  • Puede foreach en $query->posts y tendrá sus publicaciones para mostrar

    – Mtxz

    13 de agosto de 2018 a las 21:38

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad