it-swarm.com.de

Empfohlene Produkte in Produktkategorieseiten anzeigen

Ich hätte gerne Hilfe bei dem folgenden Problem mit Woocommerce.

Ich benutze WordPress 3.5.2, Woocommerce 2.0.13 und Sommerce Theme.

Ich habe eine Produktkategorieseite, auf der 5 Unterkategorien angezeigt werden. Unter den 5 Unterkategoriebildern möchte ich einige vorgestellte Produkte oder zufällige Produkte dieser Kategorien haben. Weißt du, wie ich das machen könnte?

1

Ich habe es nur zweimal überprüft und WooCommerce führt die Beschreibung der Produktkategorie durch the_content-Filter aus, was bedeutet, dass Shortcodes ausgeführt werden sollten.

WooCommerce hat viele Shortcodes, siehe Dokumentation

Einschließlich vorgestellter Produkte:

[featured_products per_page="12" columns="4"]

Der Nachteil dabei ist, dass die vorgestellten Produkte möglicherweise nicht alle aus dieser bestimmten Kategorie stammen. Sie haben nicht erwähnt, ob das ein Problem ist oder nicht.

Wenn ja, dann können Sie den Code aus dem [featured_products] duplizieren (der eigentlich nur eine sekundäre Schleife mit WP_Query ausführt), etwas optimieren und die Ausgabe dem woocommerce_before_shop_loop-Hook hinzufügen.

function wpa_107952_featured (){

    if( !is_product_category() )
        return;


    $args = array(
        'post_type' => 'product',
        'product_cat' => get_query_var('product_cat'),
        'post_status' => 'publish',
        'ignore_sticky_posts'   => 1,
        'posts_per_page' => 8,
        'meta_query' => array(
            array(
                'key' => '_visibility',
                'value' => array('catalog', 'visible'),
                'compare' => 'IN'
            ),
            array(
                'key' => '_featured',
                'value' => 'yes'
            )
        )
    );

    ob_start();

    $products = new WP_Query( $args );

    $woocommerce_loop['columns'] = 4;

    if ( $products->have_posts() ) : ?>

        <?php woocommerce_product_loop_start(); ?>

            <?php while ( $products->have_posts() ) : $products->the_post(); ?>

                <?php woocommerce_get_template_part( 'content', 'product' ); ?>

            <?php endwhile; // end of the loop. ?>

        <?php woocommerce_product_loop_end(); ?>

    <?php endif;

    wp_reset_postdata();

    echo '<div class="woocommerce">' . ob_get_clean() . '</div>';
}

add_action( 'woocommerce_before_shop_loop', 'wpa_107952_featured' );
2
helgatheviking