WooCommerce 3.0:当管理员使用我的付款通过管理面板创建一个订单找不到钩相当于管理员创建后端订单

问题描述:

沿着这post的线,我试图连接到我自己的定制支付网关网关。WooCommerce 3.0:当管理员使用我的付款通过管理面板创建一个订单找不到钩相当于管理员创建后端订单

我加入以下代码:

add_action('woocommerce_process_shop_order_meta', array($this, 'process_offline_order')); 
    add_action('woocommerce_admin_order_actions_end', array($this, 'process_offline_order2')); 
    add_action('woocommerce_save_post_shop_order', array($this, 'process_offline_order3')); 

我曾尝试在Xdebug的breakp点下降到这些相应的方法,但他们都不击中。

+0

究竟是什么问题呢?你想做什么? – Reigel

+0

你的问题到底是什么? –

+0

我试图触发它可以连接到支付网关API当WooCommerce管理员创建代表其客户之一的秩序的事件。 – Pro777

一些研究和测试后,我认为为正确的钩子是这样的WP挂钩之一:

所以我已经使用了第一个,因为它是最方便的“shop_order“后类型:

add_action('save_post_shop_order', 'process_offline_order', 10, 3); 
function process_offline_order($post_id, $post, $update){ 

    // Orders in backend only 
    if(! is_admin()) return; 

    // Get an instance of the WC_Order object (in a plugin) 
    $order = new WC_Order($post_id); 

    // For testing purpose 
    $trigger_status = get_post_meta($post_id, '_hook_is_triggered', true); 

    // 1. Fired the first time you hit create a new order (before saving it) 
    if(! $update) 
     update_post_meta($post_id, '_hook_is_triggered', 'Create new order'); // Testing 

    if($update){ 
     // 2. Fired when saving a new order 
     if('Create new order' == $trigger_status){ 
      update_post_meta($post_id, '_hook_is_triggered', 'Save the new order'); // Testing 
     } 
     // 3. Fired when Updating an order 
     else{ 
      update_post_meta($post_id, '_hook_is_triggered', 'Update order'); // Testing 
     } 
    } 
} 

您将能够与此代码轻松地测试。对我来说它工作正常。


我还与woocommerce_before_order_object_save钩试图具有2个参数:

  • $order(所述WC_Order对象)
  • $data_store(数据通过WC_Data_Store类被存储)

但我没有得到它的工作,因为我所期待的。我已经在WC_Ordersave()方法的源代码中发现它。

+1

这段代码看起来很完美,但我无法获得该方法来触发本地或我的测试服务器。我想这可能是我的配置。 – Pro777