Woocommerce - Afișarea produselor încrucișate (cross-sells) pe pagina individuală a produsului
22 iun. 2017, 14:32:48
Vizualizări: 20K
Voturi: 7
Încerc să afișez produsele încrucișate (cross-sells) pe pagina individuală a unui produs în loc să le afișez în coș:
Până acum am încercat următorul cod:
<?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 -->
Totuși, acest cod va afișa doar upsell-uri sub upsell-uri, deci este același conținut afișat de două ori. Nu sunt sigur ce acțiune să folosesc în loc de
do_action( 'woocommerce_after_single_product_summary_upsell_display' ); ?>

Alex Gogl
171
Toate răspunsurile la întrebare
2
2
add_action('woocommerce_after_single_product_summary', 'show_cross_sell_in_single_product', 30);
function show_cross_sell_in_single_product(){
$crosssells = get_post_meta( get_the_ID(), '_crosssell_ids',true);
if(empty($crosssells)){
return;
}
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'post__in' => $crosssells
);
$products = new WP_Query( $args );
if( $products->have_posts() ) :
echo '<div class="cross-sells"><h2>Produse Cross-Sell</h2>';
woocommerce_product_loop_start();
while ( $products->have_posts() ) : $products->the_post();
wc_get_template_part( 'content', 'product' );
endwhile; // sfârșitul buclei.
woocommerce_product_loop_end();
echo '</div>';
endif;
wp_reset_postdata();
}

itzmekhokan
241
23 iun. 2017 09:25:23
Comentarii
Acest cod are potențial, îmi place mult mai mult decât personalizarea unei teme. Trebuie doar să fac niște modificări la stiluri și ar trebui să funcționeze. Există vreo modalitate fără declarații absolute de clase? Gen fără partea <div class="..."></div>?

24 iun. 2017 13:07:27
1
găsește acest cod și elimină-l
1: obține ID-urile produselor cross sell folosind cheia meta '_crosssell_ids'.
<?php
/* crossells */
$crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' );
$crosssell_ids=$crosssell_ids[0];
?>
- Parcurge produsele după 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;
}

Alpesh Rathod
111
22 iun. 2017 14:45:10
Întrebări similare
3
răspunsuri
1
răspunsuri