wake-up-neo.net

So erhalten Sie einen benutzerdefinierten Feldwert anhand der woocommerce-Produkt-ID

Ich versuche, den Wert von woocommerce customfield aus einer Reihe von Produkt-IDs zu ermitteln. Kein Glück, ich bin auf einer benutzerdefinierten Seite und nicht in der Woocommerce-Schleife

versuchte dies: $ productArray1 ist eine Liste der Produkt-ID (und es funktioniert)

global $wpdb;
                        global $product;

                        foreach ($productArray1 as $value)
                        {
                            $querystr = "
                            SELECT meta_value 
                            FROM $wpdb->postmeta.meta_key
                            WHERE $wpdb->postmeta.meta_key = 'product_cip' 
                            AND $wpdb->posts.$product->ID=$value
                            ORDER BY meta_value DESC
                            ";

                            $productsCIP = $wpdb->get_results($querystr, OBJECT);

                            if ( ! $productsCIP ) {
                                $wpdb->print_error();
                            }
                            else {
                                echo $productsCIP;
                            }
                        };

Ich kann alle Produkte mit dem gleichen benutzerdefinierten Feld wie folgt erhalten:

$products = wc_get_products( array( 'product_cip' => '3337875548519' ) );
                    echo 'PRODUCT WITH SAME CIP (TOTAL : '.count($products).')<br>';

Aber ich muss 'product_cip' anhand der Produkt-ID finden. Irgendeine Ahnung ? Danke für die Hilfe

1
ilanb

Wenn Sie alle Produkte mit dem gleichen Wert für 'product_cip' suchen, versuchen Sie Folgendes:

 $ a = array (
 'post_type' => 'product', 
 'post_status' => 'publish', 
 'posts_per_page' => - 1 , 
 'meta_query' => array (
 array (
 'key' => 'product_cip', 
 'value' => 'some value', 
 'compare' => '=' 
) 
), 
 'fields' => 'ids' 
); 
 $ b = get_posts ($ a); 
 Echozählung ($ b); 

wenn Sie alle Produktdaten haben

 $ products_array = array (); 
 foreach ($ b als $ v) {
 $ _ product = wc_get_product ($ v); 
 echo $ _product-> get_name (). ','; 
 $ products_array [] = $ _ product; 
} 
1
blanck

Versuche dies:

 $ product_obj = array (); 
 foreach ($ productArray1 als $ value) 
 {
 $ product_obj ['id'] = $ value; 
 $ product_obj ['product_cip'] = get_post_meta ($ value, 'product_cip'); 
} 

oder

 foreach ($ productArray1 als $ value) 
 {
 $ product_obj ['id'] = $ value; 
 $ product_obj ['product_cip'] = get_post_meta ( $ value, 'product_cip', true); 
} 
 echo 'PRODUCT WITH SAME CIP (TOTAL:' .count ($ product_obj). ')
';

wenn der Metawert kein Array ist.

1
blanck