gpt4 book ai didi

php - 专门在 Woocommerce 3 中创建订单的 Hook

转载 作者:行者123 更新时间:2023-12-04 01:52:50 24 4
gpt4 key购买 nike

我需要检测何时成功创建了新的 WooCommerce 订单并将其设置为“处理”——这是为了添加一些额外的功能等。这可以在前端执行,因为在通过任一方式创建订单时很容易 Hook WooCommerce 的 woocommerce_thankyouwoocommerce_order_status_processing钩子(Hook)。

我遇到的问题是 通过网站后端手动创建新订单时,我也希望它能够工作 .我在通过手动添加订单时使用了一些自定义字段,这些字段用于在创建时操作订单。不幸的是,虽然 woocommerce_order_status_processing确实适用于管理订单,它似乎在保存订单元数据之前触发 - 因此,当我尝试检索任何元数据时,它是空的。

为了解决这个问题,我尝试了 WooCommerce hook for order creation from admin 上的建议或在此GitHub使用 WordPress 钩子(Hook)的线程 wp_insert_postsave_post_shop_order (save_post_{$post->post_type})。这可以解决我的订单元问题,因为它似乎在保存订单元后触发。

然而——它会触发 每次有更新或新帖子,所以我需要找到一种方法来检测它是否是新帖子。有一个$update这些钩子(Hook)上的参数旨在显示“这是否是正在更新的现有帖子”,但由于某种原因,即使它是新的帖子/订单,它似乎也总是设置为 true。

总结一下:

  • 我需要一个 WordPress/WooCommerce Hook ,该 Hook 在通过后端创建订单/发布元数据后触发,并且只有在新创建订单且未更新订单时才运行此 Hook 。

  • 我能想到的唯一其他可能的方法是根据 this suggestion检查发布日期与修改日期,但我只是认为必须有更好的方法来做到这一点!

    这是我当前的代码以防万一
    function my_order_created ( $post_id, $post, $update ) {

    // Don’t run if $post_id doesn’t exist OR post type is not order OR update is true
    if ( ! $post_id || get_post_type( $post_id ) != 'shop_order' || $update == 1 ) {
    return;
    }

    $order = wc_get_order( $post_id );

    if ( $order && $order->has_status( 'processing' ) ){

    // Do something

    }

    }

    add_action( 'wp_insert_post', 'my_order_created', 10, 3 );

    最佳答案

    您可以使用 woocommerce_new_order钩:

    add_action('woocommerce_new_order', function ($order_id) {
    // your code
    }, 10, 1);

    关于php - 专门在 Woocommerce 3 中创建订单的 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52094274/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com