将自定义字段设置为所有订单

时间:2020-09-11 作者:Micki Benci

有没有一种方法或钩子可以为woocommerce中的所有订单将此自定义字段设置为true?enter image description here

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

您可以通过save_post 按照以下示例钩住:

function wpse_374688_save_post( $post_id, $post, $update ) {
    // only update orders (post_type=shop_order)
    if ( \'shop_order\' !== $post->post_type ) {
        return;
    }
 
    update_post_meta( $post_id, \'activecampaign_for_woocommerce_accepts_marketing\', 1 );
}

add_action( \'save_post\', \'wpse_374688_save_post\', 10, 3 );
此回调将运行每种类型,并以某种形式保存和/或更新任何类型的post\\U类型。在上面的示例中,我们检查post\\u类型以确保它是shop_order, 如果没有,我们就提前保释。

如果要确保无论是保存还是更新,所有订单都将此设置为true(1),则可以保持代码不变。如果您只希望它在更新时运行,请使用$update 变量,根据这是第一次保存还是后续更新,该变量将为true或false。

作为提示,您可能需要检查订单的状态,以及某些类型的订单是否应将此值设置为true(1),例如取消/退款,但这完全由您自行决定。

相关推荐