wordpress - 保存之前修改元数据的哪个钩子(WooCommerce 产品)?
问题描述
我想在保存之前修改 WooCommerce 产品上的元数据(如果为空)。此元数据是不属于 WooCommerce 的自定义元字段。这意味着我需要首先检查给定的元数据——而不是总是设置一个值,无论如何。
- 在 WooCommerce 中保存 WooCommerce 产品元数据的哪个钩子?
woocommerce_admin_process_product_object
— 提供一个$product
对象,但其元数据尚未更新。我将从哪里获得给定的产品数据?woocommerce_process_product_meta
— 仅提供后 ID - 更少的信息。save_post_product
- 相同的。save_post
- 相同的。
- 在 save_post /
woocommerce_process_product_meta_$product_type
— IIRC 上设置产品权重的挂钩,似乎让我看到了产品,但只提供对特殊 WooCommerce 属性的访问,如权重,但不提供元数据。 - field_no_prefix_save_pre /
{$field_no_prefix}_save_pre
— 不适用于元数据。 - 在保存产品之前挂钩以获取 $_POST 变量
- 如何在保存之前编辑帖子数据?/
wp_insert_post_data
— 让我过滤(修改)核心后期数据并访问元数据,但不修改元数据。
- 如何在保存之前编辑帖子数据?/
解决方案
非常丑陋,但这在我的情况下有效:
function my_save_product_meta( $product ) {
// only modify if empty; replacement / action is simple enough so that we
// need not to worry about sanitization.
if (
isset($_POST['my_custom_field'])
&& empty(trim($_POST['my_custom_field']))
) {
$_POST['my_custom_field'] = '0';
}
}
add_action('woocommerce_admin_process_product_object', 'my_save_product_meta', 10, 1);
用于保存新产品以及更新现有产品。
推荐阅读
- reactjs - 在 pancakeswap、pantherswap、coinswap 等交换界面构建推荐计划页面?
- react-native - Base64 String to pdf JavaScript React Native 然后下载
- python - 如何为 meta.yaml 中定义的目标安装要求
- ios - 如何修复 _ADBannerContentSizeIdentifierLandscape、非公共符号
- c++ - 如何创建一个接受值向量的模板函数,并指定向量类型?
- powershell - 将 AzureAD 用户添加到 AzureAD 组
- c++ - 当我终止进程时,它也会终止线程吗?
- javascript - 在 npm lib 中使用的 rxjs 应该是依赖关系、对等依赖关系还是两者兼而有之?
- python - 带等高线图的时间轴。Python
- amazon-web-services - ELB 和 Route 53 健康检查之间的区别