Mostrar ventas cruzadas de Woocommerce en la página de producto individual

22 jun 2017, 14:32:48
Vistas: 20K
Votos: 7

Estoy tratando de mostrar las ventas cruzadas en una página de producto individual en lugar de en el carrito:

Hasta ahora he probado el siguiente código:

<?php do_action( 'woocommerce_after_single_product_summary_data_tabs' ); ?>

                                    <?php if ( $product->get_upsell_ids() ) : ?>
                                        <div class="single_product_summary_upsell">
                                            <?php do_action( 'woocommerce_after_single_product_summary_upsell_display' ); ?>
                                        </div><!-- .single_product_summary_upsells -->
                                    <?php endif; ?>

                  <?php if ( $product->get_cross_sell_ids() ) : ?>
                                        <div class="single_product_summary_upsell">
                                            <?php do_action( 'woocommerce_after_single_product_summary_upsell_display' ); ?>
                                        </div><!-- .single_product_summary_upsells -->
                                    <?php endif; ?>

                  <div class="single_product_summary_related">
                                        <?php do_action( 'woocommerce_after_single_product_summary_related_products' ); ?>
                                    </div><!-- .single_product_summary_related -->


                            </div><!-- .columns -->

Sin embargo, esto solo mostrará ventas sugeridas debajo de ventas sugeridas, por lo que es el mismo contenido dos veces. No estoy seguro de qué acción usar en lugar de

do_action( 'woocommerce_after_single_product_summary_upsell_display' ); ?> 
0
Todas las respuestas a la pregunta 2
2
12
add_action('woocommerce_after_single_product_summary', 'mostrar_productos_cruzados_en_producto_individual', 30);
function mostrar_productos_cruzados_en_producto_individual(){
    $productos_cruzados = get_post_meta( get_the_ID(), '_crosssell_ids', true);

    if(empty($productos_cruzados)){
        return;
    }

    $args = array( 
        'post_type' => 'product', 
        'posts_per_page' => -1, 
        'post__in' => $productos_cruzados 
        );
    $productos = new WP_Query( $args );
    if( $productos->have_posts() ) : 
        echo '<div class="cross-sells"><h2>Productos Relacionados</h2>';
        woocommerce_product_loop_start();
        while ( $productos->have_posts() ) : $productos->the_post();
            wc_get_template_part( 'content', 'product' );
        endwhile; // Fin del loop.
        woocommerce_product_loop_end();
        echo '</div>';
    endif;
    wp_reset_postdata();
}
23 jun 2017 09:25:23
Comentarios

Ese código va por buen camino, me gusta mucho más que personalizar un tema. Solo necesito hacer algunas modificaciones en los estilos y debería funcionar. ¿Hay alguna manera sin declaraciones absolutas de clases? ¿Algo como sin la parte <div class="..."></div>?

Alex Gogl Alex Gogl
24 jun 2017 13:07:27

Esto solo devuelve un artículo de venta cruzada, ya que get_post_meta() está configurado con $single = true

Nathan Nathan
13 sept 2017 23:06:15
1

Encuentra este código y elimínalo

1: Obtén los IDs de los productos de venta cruzada usando la clave meta '_crosssell_ids'.

<?php

/* productos de venta cruzada */

$crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' ); 
$crosssell_ids=$crosssell_ids[0];

?>
  1. Recorre los productos por ID

if(count($crosssell_ids)>0){
$args = array( 'post_type' => 'product', 'posts_per_page' => 10, 'post__in' => $crosssell_ids );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
?><a href='<?php the_permalink(); ?>'><?php
the_post_thumbnail( 'thumbnail' );
the_title();
?></a><?php
endwhile;
}
22 jun 2017 14:45:10
Comentarios

Acabo de probarlo, el problema con este código es que no utiliza realmente el diseño del tema

Alex Gogl Alex Gogl
22 jun 2017 14:56:55