web-dev-qa-db-fra.com

Comment obtenir une valeur de champ personnalisée par ID de produit woocommerce

J'essaie d'obtenir la valeur de woocommerce customfield à partir d'un tableau d'ID de produit. Pas de chance, je suis sur la page personnalisée pas sur la boucle woocommerce

essayé ceci: $ productArray1 est une liste d'ID de produit (et ça marche)

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;
                            }
                        };

Je peux obtenir tous les produits avec le même customfield comme ceci:

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

Mais je dois trouver 'product_cip' par ID de produit. Un indice? Merci pour l'aide

1
ilanb

Si vous recherchez tous les produits avec la même valeur 'product_cip', essayez ceci:

 $ a = array (
 'post_type' => 'product', 
 'post_status' => 'publish', 
 'posts_per_page' => - 1 , 
 'meta_query' => array (
 array (
 'key' => 'product_cip', 
 'value' => 'une certaine valeur', 
 'compare' => '=' 
) 
), 
 'fields' => 'ids' 
); 
 $ b = get_posts ($ a); 
 compte d'écho ($ b); 

si vous avez toutes les données produits

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

Essaye ça:

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

ou

 poureach ($ productArray1 as $ value) 
 {
 $ product_obj ['id'] = $ value; 
 $ product_obj ['product_cip'] = get_post_meta ( $ value, 'product_cip', true); 
} 
 echo 'PRODUIT AVEC LE MÊME CIP (TOTAL:' .count ($ product_obj). ')
';

si meta value pas tableau.

1
blanck