Erhalten Sie vorgestellte Produkte in Woocommerce 3

Lesezeit: 3 Minuten

Erhalten Sie vorgestellte Produkte in Woocommerce 3
Tanvir

Ich möchte Ausgewählte Produkte für Upselling (oder aktuelle Produkte ODER meistverkaufte Produkte) hinzufügen Neue Bestellung E-Mail-Vorlage. Es funktioniert wie Upsell mit E-Mail-Marketing. Wie füge ich es der Woocommerce-E-Mail-Vorlage hinzu, sodass am Ende der E-Mail ein Abschnitt angezeigt wird, der meine vorgestellten/aktuellen/meistverkauften Produkte zeigt? Ich habe versucht, diesen Code in meiner E-Mail-Vorlage für neue Bestellungen zu verwenden, aber nichts funktioniert. Ich verwende die neueste Version von WordPress und Woocommerce.

$args = array(  
    'post_type' => 'product',  
    'meta_key' => '_featured',  
    'meta_value' => 'yes',  
    'posts_per_page' => 1  
);  

$featured_query = new WP_Query( $args );  

if ($featured_query->have_posts()) :   

    while ($featured_query->have_posts()) :   

        $featured_query->the_post();  

        $product = get_product( $featured_query->post->ID );  

        // Output product information here  

    endwhile;  

endif;  

wp_reset_query(); // Remember to reset

Erhalten Sie vorgestellte Produkte in Woocommerce 3
LoicTheAztec

Seit Woocommerce 3 haben die Produkte folgende Eigenschaften:

  • “vorgestellt”,
  • “Lagerbestand”,
  • “Sichtbarkeit des Katalogs”
  • “Bewertungssystem”

werden jetzt wie ein Beitragsbegriff unter gespeichert 'product_visibility' Taxonomie, für bessere Leistungen. Alte Postmeta-Daten funktionieren also nicht mehr.

Damit Ihr Code funktioniert, müssen Sie stattdessen a erstellen tax_query Hier entlang:

function custom_featured_products(){

    $query = new WP_Query( array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'posts_per_page' => -1 ,
        'tax_query' => array( array(
            'taxonomy' => 'product_visibility',
            'field'    => 'term_id',
            'terms'    => 'featured',
            'operator' => 'IN',
        ) )
    ) );

    $featured_product_names = array();

    if ( $query->have_posts() ): while ( $query->have_posts() ): $query->the_post();

            $product = wc_get_product( $query->post->ID );

            $featured_product_names[] = $product->get_title();

    endwhile; wp_reset_query();endif;

    // Testing output
    echo '<p>Featured products: ' . implode(', ', $featured_product_names) . '</p>';
}

// Displaying the featured products names in new order email notification
add_action ('woocommerce_email_customer_details', 'new_order_featured_products_display', 30, 4 );
function new_order_featured_products_display( $order, $sent_to_admin, $plain_text, $email ){
    // Only for "New Order" email notification
    if( 'new_order' != $email->id ) return;

    custom_featured_products(); // calling the featured products function output
}

Dieser Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder Designs) eingefügt.

Getestet und funktioniert.

Aktualisiert im Zusammenhang mit Ihren Kommentaren…

Code in einer Funktion hinzugefügt, die über eine Hook-Funktion in der E-Mail-Benachrichtigung „Neue Bestellung“ aufgerufen wird.

Um das Produktbild zu erhalten, verwenden Sie: $product->get_image( 'shop_thumbnail' );

Um den Produktlink zu erhalten, verwenden Sie: $product->get_permalink();

  • Vielen Dank, kann ich dieses Stück Code zu theme-child/woocommerce/emails/admin-new-order.php hinzufügen, wird es so funktionieren

    – Tanvir

    18. Februar 2018 um 7:27 Uhr

  • Danke, ich möchte es am Ende der E-Mail-Vorlage für neue Bestellungen, so wie hier – ibb.co/mKBk5n es ist wie eine Upsell-Strategie

    – Tanvir

    18. Februar 2018 um 7:31 Uhr

  • Danke, auf jeden Fall werde ich n Upvote akzeptieren, nachdem ich die Lösung bekommen habe. Ich habe versucht, den Code in die Vorlage einzufügen, aber kein Glück, überprüfen Sie dies bitte ibb.co/bLZYrS

    – Tanvir

    18. Februar 2018 um 7:36 Uhr

  • Lassen Sie uns diese Diskussion im Chat fortsetzen.

    – Tanvir

    18. Februar 2018 um 7:53 Uhr

  • Vielen Dank, es hat die Produkte gut in der Admin-E-Mail-Vorlage hinzugefügt. Ich möchte es der neuen Bestellvorlage des Kunden hinzufügen, damit nur der Kunde es erhält. Der Code funktioniert übrigens.

    – Tanvir

    18. Februar 2018 um 8:21 Uhr

<ul class="products">
    <?php
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => 12,
            'tax_query' => array(
                    array(
                        'taxonomy' => 'product_visibility',
                        'field'    => 'name',
                        'terms'    => 'featured',
                    ),
                ),
            );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
               echo '<p>'.get_the_title().'</p>';
            endwhile;
        } else {
            echo __( 'No products found' );
        }
        wp_reset_postdata();
    ?>
</ul><!--/.products-->

1004620cookie-checkErhalten Sie vorgestellte Produkte in Woocommerce 3

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy