it-swarm.com.de

WooCommerce gibt Produktobjekt nach ID zurück

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

$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 dankbar.

Vielen Dank,

Tim

34
mpactMEDIA

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

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

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

57
Jacky Mok

Verwenden Sie diese Methode:

$_product = wc_get_product( $id );

Offizielle API-Dokumente: wc_get_product

72
Unicco

Okay, ich habe es verdient, gedrosselt zu werden. definitiv eine RTM aber nicht für WooCommerce, für Wordpress. Lösung gefunden aufgrund einer JOLT Cola (alle hageln JOLT Cola).

AUFGABE: Das Feld 'related_product_ids' wurde einem benutzerdefinierten Beitragstyp hinzugefügt. Wenn dieser Beitrag angezeigt wird, können damit Mini-Produktanzeigen angezeigt werden.

PROBLEM: Es gab 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 für jeden, der sich damit beschäftigt hat.

Tim

4
mpactMEDIA
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);
}
1
Mr X