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
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();
<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-->