web-dev-qa-db-ja.com

Woocommerce商品IDでカスタムフィールド値を取得する方法

商品IDの配列からwoocommerce customfieldの価値を得ようとしています。運が悪い、私はwoocommerceのループではなくカスタムページにいます。

これを試してみました:$ productArray1は製品IDのリストです(そしてそれは働いています)

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

私はこのように同じカスタムフィールドを持つすべての製品を入手することができます。

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

しかし、私は製品IDで 'product_cip'を見つける必要があります。どんな手掛かり ?手伝ってくれてありがとう

1
ilanb

同じ 'product_cip'値を持つすべての商品を探す場合は、次のことを試してください。

 $ a = array(
 'post_type' => 'product'、
 'post_status' => 'publish'、
 'posts_per_page' =>  -  1 、
 'meta_query' => array(
 array(
 'key' => 'product_cip'、
 'value' => 'some value'、[ [比較] => '=' 
)
)、
 'フィールド' => 'ids' 
); 
 $ b = get_posts($ a); 
エコーカウント($ b); 

すべての製品データを入手した場合

 $ products_array = array(); 
 foreach($ bを$ vとして){
 $ _ product = wc_get_product($ v); 
 echo $ _product-> get_name()。 '、'; 
 $ products_array [] = $ _ product; 
} 
1
blanck

これを試して:

 $ product_obj = array(); 
 foreach($ productArray1を$ valueとして)
 {
 $ product_obj ['id'] = $ value; 
 $ product_obj ['product_cip'] = get_post_meta($ value、 'product_cip'); 
} 

または

 foreach($ productArray1を$ value)
 {
 $ product_obj ['id'] = $ value; 
 $ product_obj ['product_cip'] = get_post_meta( $ value、 'product_cip'、true); 
} 
 echo '同じCIPを持つ製品(合計:' .count($ product_obj)。)
';

メタ値が配列でない場合.

1
blanck