当前位置: 首页 > 知识库问答 >
问题:

获取用户自定义元数据值并按订单更新

裴彦
2023-03-14

在woocommerce中,我试图向现有的php代码中添加额外的代码,该代码将值存储到数据库中的advanced customer字段中。

如您所见,我通过添加不同的值来计算值“Kontostandeintrag”,并将该值存储在post_meta的“Kontostandeintrag”字段中。我对每个订单行都这样做。

这工作罚款。

作为下一步,我想阅读user_meta中的现有客户字段“_kontostandaktuell”(针对订单行的客户),将实际值“Kontostandeintrag”添加到此字段,并再次使用此字段的总和值更新字段“_kontostandaktuell”。因此,在运行完所有订单行之后,我应该在每个客户的用户元字段“\u kontostandaktuell”中获得所有“Kontostandeintrag”值的总和。

获取用户html" target="_blank">自定义元数据值并在WooCommerce中更新

我想扩展的现有代码是:

add_filter('woe_get_order_value_Kontostandeintrag', function( $value, $order, $fieldname ) {

    $id = $order->get_id();
    $value =get_post_meta($id,"GS-Bargeldeinzahlung",true) +  $order->get_total() + get_post_meta($id,"GS-Mitgliedsbeitrag",true) + get_post_meta($id,"GS-Nachlass",true) + get_post_meta($id,"GS-Guthabenkonto",true);

    global $wpdb;
    $data = array("meta_value" =>$value);
    $where = array("post_id"=>$id,"meta_key" =>"Kontostandeintrag");
    $wpdb->update( "wp_postmeta", $data, $where );

    return $value;

},10,3);

共有1个答案

宿衡虑
2023-03-14

由于Woocommerce 3,您的代码有点过时,不需要使用任何SQL查询。因此,我在可用的WC\u顺序对象上使用了一些WC\u数据方法,重新访问了您的代码。

另外,在这个函数中,我们从用户元键“_kontostandaktuell”中获取元值,然后更新该元值,并将计算值添加到其中。

代码:

add_filter('woe_get_order_value_Kontostandeintrag', 'filter_get_order_value_kontostandeintrag', 10, 3 );
function filter_get_order_value_kontostandeintrag( $value, $order, $fieldname ) {
    // Calculation from different order meta values
    $value  = $order->get_total() +
              $order->get_meta('GS-Bargeldeinzahlung') +
              $order->get_meta('GS-Mitgliedsbeitrag') +
              $order->get_meta('GS-Nachlass') +
              $order->get_meta('GS-Guthabenkonto');

    // Update order meta value for "Kontostandeintrag" key
    $order->update_meta_data('Kontostandeintrag', $value );
    $order->save(); // Save to database

    // Get the User ID from order
    $user_id = $order->get_customer_id();

    // Get user meta value for "_kontostandaktuell" key
    $kontostandaktuell = get_user_meta( $user_id, '_kontostandaktuell', true );

    // Update user meta value for "_kontostandaktuell" key
    update_user_meta( $user_id, '_kontostandaktuell', $kontostandaktuell + $value );

    return $value;
}

它应该工作。

相关WordPress用户函数文档:get\u user\u meta()update\u user\u meta()

添加(与您的评论相关):

要重置_kontostandaktuelluser字段,您应该从代码中删除:

// Get user meta value for "_kontostandaktuell" key
$kontostandaktuell = get_user_meta( $user_id, '_kontostandaktuell', true );

并从中删除update_user_meta()函数$kontostanaktuell,因此您将有:

update_user_meta( $user_id, '_kontostandaktuell', $value );
 类似资料:
  • null 我希望能够从数组中获取某些元值,例如、、、、等。 这个PHP代码段将添加一个字段的订单电子邮件,但我如何编辑这一点,我可以让它显示一些元从数组? 对于特定的WooCommerce订单,我使用 这表明:

  • 为什么我不能从Woocommerce签出字段中检索数据,以便在订单处理时更新订阅数据? 我想根据客户结帐时的频率请求更新下一个续订日期。这是我的密码: 1) 设置签出字段: 2) 更新订单元数据。这将在客户订单上创建两个自定义字段,并更新订阅上的计费间隔: 3) 更新续约日期 对于最后一部分,我可以使用我选择的虚拟日期更新续约日期(例如:,但当我试图让它读取字段时,它会恢复为默认值。 这是我尝试过

  • 在Woocommerce管理屏幕中,我试图使用订单行元数据显示一个按钮,该按钮将打开一个包含dropship供应商URL的新窗口。我已成功从订单上的产品中提取供应商URL,并将其推送到订单行项目。 我可以将元数据更改为按钮,但其结果是包含自定义选项的其他自定义字段被删除。 这是我添加到文件的完整代码 这些图像显示了使用最后一段代码之前和之后的情况。 之前: 之后: 我的代码哪里出了问题?我试图实现

  • 我有一种不同的邮政订单,我试图返回,但我找不到任何有答案的地方。我使用wp_query尝试按元值列表排序帖子。然而,非标准orderby选项做什么,我试图实现。 我的元值存储为逗号列表字符串,如下所示: 1, 5, 10, 3, 21, 6 然后我获取这些值并将其分解为如下数组: 我做了一个标准的wp_query,但问题是,我试图按照我的$banner_nums变量中的实际顺序来排列这些帖子的显示

  • 我有一个WooCommerce订单的自定义元数据,现在我想在结账后在感谢页面上显示它,但是,数据不可用。数据保存在管理员中,我似乎无法访问它。 但是当我转储时,我的元数据不存在。 我正在使用; 保存数据,但转储

  • 在woocommerce单页产品上,我创建了一个自定义字段。我希望它的值在订单生效时存储在订单元中。经过几个小时的研究,我还没有找到任何解决办法来结束!但我相信我已经很接近了。。。 这是我的实际代码: 以下是我目前掌握的情况: 这就是我想要的: 如何将此自定义字段数据保存为订单元数据,以便在“自定义字段”元框中显示值。 任何帮助都很感激。