WooCommerce gibt Produktobjekt nach ID zurück

Lesezeit: 4 Minuten

Ich erstelle ein benutzerdefiniertes Thema für WooCommerce und muss in der Lage sein, eine Mini-Produktanzeige zu erstellen. Ich habe Probleme, Dokumentation zur Woocommerce-API zu finden. Ich habe eine durch Kommas getrennte Liste von Produkt-IDs, die ich durchlaufen und für jede nacheinander eine benutzerdefinierte Mini-Produktanzeige anzeigen muss.

$key_values = get_post_custom_values('rel_products_ids');
//get comma delimited list from product

$rel_product_ids = explode(",", trim($key_values, ",")); 
// create array of just the product ids

foreach ( $rel_product_ids as $pid ) { 
    //sequentially get each id and do something with it

    $loop = new WP_Query( array( 'post__in' => $pid ) );
    // also tried ...
    //$loop = new WP_Query( array( 'ID' => $pid ) );

    while ( $loop->have_posts() ) : $loop->the_post(); $_product = &new WC_Product( $loop->post->ID );
        //do stuff here I have stripped the html in favor of getting to the meat of the issue
        woocommerce_show_product_sale_flash( $post, $_product );
        if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'shop_single');
        get_permalink( $loop->post->ID );
        the_title(); 
        $_product->get_price_html();
    endwhile;
}

Jede Hilfe wäre willkommen.

Danke,

Tim

  • Woocommerce-Dokumente können ziemlich spärlich sein, normalerweise listen sie nur Funktionen und Parameter ohne wirkliche Erklärung auf

    – Sprich nerdig mit mir

    18. August 2014 um 4:18 Uhr

WooCommerce gibt Produktobjekt nach ID zuruck
Unico

Verwenden Sie diese Methode:

$_product = wc_get_product( $id );

Offizielle API-Dokumente: wc_get_product

  • Dies ist der eigentliche Weg, dies zu tun. Es ist nicht erforderlich, jedes Mal eine WC_Product_Factory zu erstellen, da es dort eine Instanz gibt, die ständig von WC verwendet wird.

    – daniel.gindi

    10. November 2016 um 5:05 Uhr

  • Wie kann ich get_permalink erhalten, wenn ich diese Methode verwende?

    – huykon225

    28. März 2017 um 9:34 Uhr

  • @huykon225 WooCommerce muss nicht aufgerufen werden: $link = get_permalink($id);

    – indexzwei

    4. April 2017 um 14:59 Uhr

Eine andere einfache Möglichkeit besteht darin, die Klasse WC_Product_Factory zu verwenden und dann die Funktion get_product(ID) aufzurufen.

http://docs.woothemes.com/wc-apidocs/source-class-WC_Product_Factory.html#16-63

Probe:

// assuming the list of product IDs is are stored in an array called IDs;
$_pf = new WC_Product_Factory();  
foreach ($IDs as $id) {

    $_product = $_pf->get_product($id);

    // from here $_product will be a fully functional WC Product object, 
    // you can use all functions as listed in their api
}

Sie können dann alle Funktionsaufrufe wie in ihrer API aufgeführt verwenden:
http://docs.woothemes.com/wc-apidocs/class-WC_Product.html

  • Oh, sie haben eine Fabrik für die Produkte, das ist genau das, was ich brauchte. Funktioniert wie ein Zauber, danke.

    – Florian Rachor

    15. Oktober 2015 um 15:15 Uhr

  • @Jacy Mok gibt es im Woocommerce eine Möglichkeit, Produkte von der API und nicht von der Datenbank zu erhalten?

    – ShaMoh

    5. Juli 2017 um 10:57 Uhr

  • Woo hat eine vollständig gekennzeichnete API für Shop-Anbieter (nicht für Kunden). docs.woocommerce.com/document/woocommerce-rest-api

    – Maciej Paprocki

    15. Dezember 2017 um 1:20 Uhr


WooCommerce gibt Produktobjekt nach ID zuruck
STEAMworks-Lernzentrum

In Ordnung, ich verdiene es, erdrosselt zu werden. definitiv ein RTM, aber nicht für WooCommerce, für WordPress. Lösung aufgrund einer JOLT Cola gefunden (all hail JOLT Cola).

AUFGABE: Feld mit dem Namen „related_product_ids“ zu einem benutzerdefinierten Beitragstyp hinzugefügt. Wenn also dieser Beitrag angezeigt wird, können Mini-Produktdisplays damit angezeigt werden.

PROBLEM: Hatte ein Problem beim Abrufen der mehreren IDs, die über WP_Query zurückgegeben wurden.

LÖSUNG:

$related_id_list          = get_post_custom_values('related_product_ids');
    // Get comma delimited list from current post
$related_product_ids      = explode(",", trim($related_id_list[0],','));
    // Return an array of the IDs ensure no empty array elements from extra commas
$related_product_post_ids = array( 'post_type' => 'product', 
                                   'post__in'  => $related_product_ids,
                                   'meta_query'=> array( 
                                        array( 'key'    => '_visibility',
                                               'value'  => array('catalog', 'visible'),'compare' => 'IN'
                                        )
                            ) 
);      
    // Query to get all product posts matching given IDs provided it is a published post
$loop = new WP_Query( $related_posts );
    // Execute query
while ( $loop->have_posts() ) : $loop->the_post(); $_product = get_product( $loop->post->ID );
    // Do stuff here to display your products 
endwhile;

Vielen Dank an alle, die sich vielleicht etwas Zeit dafür genommen haben.

Tim

  • Du solltest dich ändern new WP_Query( $related_posts ); mit new WP_Query( $related_product_post_ids ); . Prost!

    – Cristian Ciocău

    28. Juni 2013 um 15:13 Uhr


  • get_product ist veraltet und sollte durch ersetzt werden wc_get_product

    – Will Craig

    19. April 2016 um 16:25 Uhr

global $woocommerce;
var_dump($woocommerce->customer->get_country());
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
    $product = new WC_product($cart_item['product_id']);
    var_dump($product);
}

898030cookie-checkWooCommerce gibt Produktobjekt nach ID zurück

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

Privacy policy