【问题标题】:Check for an order item meta data value in Woocommerce 3在 Woocommerce 3 中检查订单项元数据值
【发布时间】:2018-06-13 05:10:36
【问题描述】:

我正在使用 Woocommerce 最新版本 3.4.2。插件:“WC Fields Factory”或“Woocommerce Custom Product Addons”。 如何在元数据中进行值检查? 看了半天官方文档也没找到解决办法。

示例: 我在数组中有自定义值。我想检查一下——如果有“糖”的值,那么......

Meta $key - '可选的选择'

$custom_meta = $item->get_meta('Optionally select'); // Show all value

foreach( $order->get_items() as $item_id => $item){
    $skus[] = $product->get_sku();

    // Here need add check and formate meta value
}

我想实现这个: $skus[] = //如果$custom_meta 有值'sugar',我给$skus[] = '50000' 的自定义值

【问题讨论】:

  • $custom_meta 是一个数组吗?
  • 是的,“可选选择”的值是 0-5。
  • print_r( $custom_meta); 打印:肉桂、糖、薄荷、奶油、焦糖

标签: php wordpress woocommerce metadata orders


【解决方案1】:

由于订单项元数据值是逗号分隔字符串,您可以这样使用strpos()

$ops = $item->get_meta('Optionally select');
if( strpos( $ops, 'Sugar' ) !== false ) $skus[] = '50000';

【讨论】:

    【解决方案2】:

    你可以使用array_search

    $custom_meta = $item->get_meta('Optionally select'); // Show all value
    
    $sku = (array_search('Sugar', $custom_meta) !== false)
      ? '50000'
      : '0'; // default value
    

    【讨论】:

    • 我查过了。总是显示50000。即使我点的时候没有选糖。
    • 我检查了print_r( $custom_meta); print:薄荷、奶油、焦糖。不加糖,但显示50000。
    • 不可能,必须有另一行代码将 $sku 分配给“50000”。我添加了 print_r($sku);就在分配之后,它在没有“糖”的情况下运行良好。请使用 Ctrl + F 并搜索 $sku
    • 我查过了。输入了 53739992,不幸的是同样的结果。
    • 你用的是什么php版本?
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2021-07-10
    • 2023-04-02
    • 2017-09-21
    • 2016-12-09
    • 2020-12-10
    • 2021-06-01
    相关资源
    最近更新 更多