在所有WooCommerce可变产品上按自定义元字段获取库存

时间:2019-05-06 作者:wplearner

在WooCommerce中,我的产品上有一个自定义元字段“Brand”,每个产品都指定了一个品牌
现在我想从所有产品中获得每个品牌的总库存,而我只有可变产品,所以我想我可能需要通过Post类型进行查询product_variation.

我不想为此运行WordPress元查询,因为我有很多品牌,也不想运行太多循环
由于我没有SQL技能,我无法正确实现这一点,我将非常感谢您的帮助。

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

以下函数将为您提供一个数组,其中包含从每个自定义元字段“Brand”值的所有产品变体中计算出的库存量,使用WPDB 类(SQL查询):

global $wpdb;

$results = $wpdb->get_results( "
    SELECT pm.meta_value as brand, SUM(pm2.meta_value) as stock
    FROM {$wpdb->prefix}postmeta pm
    INNER JOIN {$wpdb->prefix}posts p
        ON pm.post_id = p.post_parent
    INNER JOIN {$wpdb->prefix}postmeta as pm2
        ON p.ID = pm2.post_id
    WHERE p.post_status = \'publish\'
    AND p.post_type = \'product_variation\'
    AND p.post_parent > 0
    AND pm.meta_key = \'Brand\'
    AND pm2.meta_key = \'_stock\'
    AND pm2.meta_value != \'\'
    AND pm2.meta_value != \'NULL\'
    GROUP BY pm.meta_value
");

// Display (example)
echo \'<ul class="stock-by-brand">\';

foreach ($results as $result ) {
    echo \'<li><strong>\' . $result->brand . \'</strong>: \' . $result->stock . \'</li>\';
}

echo \'<ul>\';
测试和工作

相关推荐

使用admin-ajax.php时出现错误400错误请求

我有一个简单的ajax脚本,可以在WordPress中发送表单。获取ajax URL的PHP代码是:wp_localize_script( \'custom_child\', \'jAjax\', array(\'ajax_url\' =>admin_url(\'admin-ajax.php\'))); 此外,我还有in函数。php如下所示:function enviar_pedido_clientes() { // do something with the da