Obtenga y muestre productos relacionados en WooCommerce

2 minutos de lectura

avatar de usuario
Garabatos.

He incluido productos relacionados con WooCommerce en un tema con lo siguiente:

<?php wc_get_template( 'single-product/related.php' ); ?>

Esto se ha copiado en mi plantilla y se está ejecutando.

Sin embargo, a pesar de que he agregado varias ventas adicionales con este producto, el $related_products variable (utilizada en el ciclo) es NULL. ¿Hay alguna otra variable en juego para comenzar a mostrar estos productos relacionados?

  • @LoicTheAztec: hecho amigo, muchas gracias por su ayuda, sin duda aparecerá en cualquier cosa que etiquete con woocommerce en el futuro. 🙂

    – Garabatos.

    28 de noviembre de 2018 a las 21:54

avatar de usuario
LoicTheAztec

Necesitas mucho más que eso (y el post_id debe ser un producto):

global $product; // If not set…

if( ! is_a( $product, 'WC_Product' ) ){
    $product = wc_get_product(get_the_id());
}

$args = array(
    'posts_per_page' => 4,
    'columns'        => 4,
    'orderby'        => 'rand',
    'order'          => 'desc',
);

$args['related_products'] = array_filter( array_map( 'wc_get_product', wc_get_related_products( $product->get_id(), $args['posts_per_page'], $product->get_upsell_ids() ) ), 'wc_products_array_filter_visible' );
$args['related_products'] = wc_products_array_orderby( $args['related_products'], $args['orderby'], $args['order'] );

// Set global loop values.
wc_set_loop_prop( 'name', 'related' );
wc_set_loop_prop( 'columns', $args['columns'] );

wc_get_template( 'single-product/related.php', $args );

O de una manera más corta (que te dará lo mismo):

global $product;

if( ! is_a( $product, 'WC_Product' ) ){
    $product = wc_get_product(get_the_id());
}

woocommerce_related_products( array(
    'posts_per_page' => 4,
    'columns'        => 4,
    'orderby'        => 'rand'
) );

Ambas formas están probadas y funcionan…

  • En su función woocommerce_related_products(), usó 3 corchetes de cierre en lugar de 2. Su código actual no funcionará, solo necesita 2 corchetes de cierre. De lo contrario, el código funciona.

    – anthonyCam

    3 de febrero de 2019 a las 12:42


  • @anthonyCam Lo siento, pero solo veo 2 paréntesis de curva de cierre en el código de función woocommerce_related_products() allí y no 3… Creo que estás creando una confusión.

    – LoicTheAztec

    22 sep 2019 a las 22:41


  • La ultima abreviatura no me funciono, la de arriba si

    – ii iml0sto1

    22 de noviembre de 2019 a las 9:02


  • El código abreviado funciona para mí, sin embargo, causa un error de estructura HTML. El primer enlace está abierto. ¿Cómo puedo arreglarlo?

    – Mega

    7 de agosto de 2020 a las 9:35

¿Ha sido útil esta solución?