如何通过WooCommerce产品ID获取Customfield值

时间:2018-01-13 作者:ilanb

我试图从产品ID数组中获取WooCommerce自定义字段的值。不走运,我在自定义页面上,不在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\\u cip”。有什么线索吗?

谢谢你的帮助。

2 个回复
最合适的回答,由SO网友:blanck 整理而成

如果您查找具有相同“product\\u cip”值的所有产品,请尝试以下操作:

$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);
echo count($b);
如果您已获得所有产品数据

$products_array=array();
foreach($b as $v){
    $_product=wc_get_product($v);
    echo $_product->get_name().\',\';
    $products_array[]=$_product;
}

SO网友:blanck

尝试以下操作:

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

foreach ($productArray1 as $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).\')
\';
如果元值不是数组。

结束

相关推荐