una todos shortcodes página productos plugin pagina page mostrar los destacados crear contiene all php wordpress twitter-bootstrap woocommerce carousel

php - todos - woocommerce shortcodes all categories



Cómo arreglar la cacería de bootstrap para productos destacados en WooCommerce (2)

En primer lugar, su iteración es incorrecta. Primero está ejecutando un bucle malformado for n = 6 veces, luego, para cada entero de 0 a 5, ejecuta un bucle foreach m veces, lo que da como resultado un bucle malformado con complejidad de O (n * m) que no resuelve su problema.

Aquí está tu código, reescrito. Espero eso ayude.

<div id="featured" class="carousel slide "> <div class="carousel-inner "> <?php $args = array( ''post_type'' => ''product'', ''meta_key'' => ''_featured'', ''meta_value'' => ''yes'', ''posts_per_page'' => 6, ''post_status'' => ''publish'', ''offset'' => 0, ''order'' => ''DESC'' ); $featured_loop = new WP_Query( $args ); if ( $featured_loop->have_posts() ): while ( $featured_loop->have_posts() ) : $featured_loop->the_post(); ?> <div class="<?php echo ''item''; ?>"> <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 "> <div class="thumbnail"> <i class="tag"></i> <a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php echo woocommerce_get_product_thumbnail(); ?> </a> </div> <div class="panel-body text-center"> <h6><?php the_title(); ?> </h6> </div> </div> </div> <?php endwhile; ?> <a class="left carousel-control" href="#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a> <a class="right carousel-control" href="#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a> <?php wp_reset_postdata(); endif; ?> </div> </div> <?php wp_reset_query(); ?>

Probé algunos complementos por haber presentado la compilación de slider del producto para mi sitio de wordpress de woocommerce, pero no funcionaron como pretendía, así que traté de crear por mi cuenta. Casi funciona, excepto que muestra publicaciones adicionales que no existen en absoluto. No existen incluso como productos. La primera imagen muestra el producto presentado. La segunda imagen es contenido adicional que no existe en absoluto. El número de tales publicaciones innecesarias es igual al múltiplo del número total de productos presentados. La sugerencia sobre una pregunta similar refleja casi lo que hice pero tiene problemas. En mi caso, tengo 5 productos destacados y muestra 25 publicaciones innecesarias. Actualmente, intenté mostrar solo un elemento a la vez y después de solucionar este problema, mostraré 3 publicaciones a la vez para que se repita dos veces y se muestren 6 publicaciones.

<div id="featured" class="carousel slide "> <div class="carousel-inner "> <?php $args = array( ''post_type'' => ''product'', ''meta_key'' => ''_featured'', ''meta_value'' => ''yes'', ''posts_per_page'' => 8, ''post_status'' => ''publish'', ''offset'' => 0, ''numberposts'' => 6, //''orderby'' =>''rand'', ''order'' => ''DESC'' ); $featured_loop = new WP_Query( $args ); //echo "<pre>"; //print_r($featured_loop); //echo "</pre>"; if ( $featured_loop->have_posts()){ $i = 1; $count; for ($count=0; $count < 6;) { foreach ( $featured_loop as $featured ) { $featured_loop->the_post(); ?> <div class= <?php echo ''"''; echo ''item ''; if ($i == 1) { echo ''active''; } echo ''"''; ?>> <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 "> <div class="thumbnail"> <i class="tag"></i> <a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php if (has_post_thumbnail( $featured->post->ID )){ echo get_the_post_thumbnail($featured->post->ID, ''shop_catalog''); } else { echo ''<img width ="150" src="''.woocommerce_placeholder_img_src().''" alt="Placeholder" class="img-responsive img-rounded" />''; } ?> </a> </div><!-- thumbnail --> <div class="panel-body text-center"> <h6><?php the_title(); ?> </h6> </div><!-- panel-body text-center --> </div><!-- col-xs-6 col-sm-4 col-md-4 col-lg-4 --> </div> <?php $i++; } $count++; } } ?> </div><!-- carousal item class ends --> </div><!-- carousal inner ends --> <a class="left carousel-control" href="#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a> <a class="right carousel-control" href="#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a> <?php wp_reset_postdata(); wp_reset_query(); ?> </div><!-- carousel slide -->


Respondiendo a esto con la ayuda de @Sorin Gheata. Se olvidó de hacerlo funcionar como un carrusel de bootstrap.

<div id="featured" class="carousel slide "> <div class="carousel-inner "> <?php $args = array( ''post_type'' => ''product'', ''meta_key'' => ''_featured'', ''meta_value'' => ''yes'', ''numberposts'' => 6, ''posts_per_page'' => 6 ); $featured_loop = new WP_Query( $args );//global $product; if ( $featured_loop->have_posts() ): while ( $featured_loop->have_posts() ) : $featured_loop->the_post(); ?> <div class= <?php echo ''"''; echo ''item ''; if ($i == 1) { echo ''active''; } echo ''"''; ?>> <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 "> <div class="thumbnail"> <i class="tag"></i> <a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php echo woocommerce_get_product_thumbnail(); ?> </a> </div> <div class="panel-body text-center"> <h6><?php the_title(); ?> </h6> </div> </div> </div> <?php $i++; endwhile; ?> <a class="left carousel-control" href="#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a> <a class="right carousel-control" href="#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a> <?php wp_reset_postdata(); endif; ?> </div> </div> <?php wp_reset_query(); ?>