我试图从产品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”。有什么线索吗?
谢谢你的帮助。
最合适的回答,由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).\')
\';
如果元值不是数组。