Hallo zusammen,
ich benutze den unten stehenden Code auf meinen Produktseiten (Woocommerce), um Produkte mit einem bestimmten Tag anzeigen zu lassen. Ich gebe dann z.B. bei einem roten Schuh den Shortcode [woo_products_by_tags tags="Schuh"] ein und erhalte daraufhin alle Produkte, die auch mit "Schuh" getagged sind.
Mein Ziel ist es nun, die Reihenfolge der angezeigten Produkte so zu verändern, dass das aktuelle Produkt (z.B. der rote Schuh) immer als erstes Produkt in der Auflistung erscheint. Das ganze soll dynamisch passieren, d.h. auf der Seite von dem grünen Turnschuh soll dann dieser als erstes angezeigt werden usw.
Weiß jemand von euch wie ich den Code anpassen muss? Vielen Dank schonmal!
HTML
function woo_products_by_tags_shortcode( $atts, $content = null ) {
// Get attributes
extract( shortcode_atts( array(
'per_page' => '12',
'columns' => '4',
'orderby' => 'title',
'order' => 'desc',
'category' => '',
'tags' => '',
), $atts ) );
ob_start();
// Define Query Arguments
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'orderby' => $ordering_args['orderby'],
'order' => $ordering_args['order'],
'posts_per_page' => $per_page,
'product_tag' => $tags,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'terms' => array( esc_attr( $category ) ),
'field' => 'slug',
'operator' => $operator
))
);
ob_start();
$products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) );
$woocommerce_loop['columns'] = $columns;
if ( $products->have_posts() ) : ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ( $products->have_posts() ) : $products->the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php endif;
woocommerce_reset_loop();
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
}
add_shortcode("woo_products_by_tags", "woo_products_by_tags_shortcode");
Alles anzeigen