0

当 WooCommerce 订阅创建新的订阅续订订单时,我正在尝试执行一项功能。

原因是我希望捕获此事件并将详细信息传递到不同的数据库,以便我们可以在后端系统中使用支付网关触发业务工作流程。

我已经使用 wcs_renewal_order_created 尝试了 add_action 和 add_filter ,然后通过从父订阅订单手动创建续订付款来进行测试。

钩子调用函数,执行代码,将一些数据放入一些测试表中,然后 Wordpress 显示错误,如下所示。

在创建续订订阅订单时是否有更简单的方法来触发功能,如果没有,任何人都可以帮助解释为什么它似乎无法调用似乎设置付款方式的类。

function log_renewal_order_interface($order, $subscription) {
write_log('woocommerce_subscriptions_renewal_order_created function called');

global $conn;
global $wpdb, $table_prefix;

write_log('woocommerce_subscriptions_renewal_order_created setting up test variables');

write_log($order);


$test1 = 'logged renewal order';
$test2 = 'order_id'.$order_id;
$test3 = 'not set';
$test4 = 'not set';
$test5 = 'not set';

// test table entry
$conn->insert('test_tabel', 
    array('test1' => $test1, 'test2' => $test2, 'test3' => $test3, 'test4' => $test4, 'test5' => $test5),
    array('%s', '%s', '%s', '%s', '%s'));

 }

add_filter ('wcs_renewal_order_created', 'log_renewal_order_interface', 10,2);

然后我收到以下错误:

致命错误:未捕获错误:在 /home/ourislan/lifestyle5d.ourislandsvoice.com/wp-content/plugins/woocommerce-subscriptions/includes/admin/class-wcs-admin-meta- 中调用 null 上的成员函数 set_payment_method() box.php:176 堆栈跟踪:#0 /home/ourislan/lifestyle5d.ourislandsvoice.com/wp-includes/class-wp-hook.php(286): WCS_Admin_Meta_Boxes::create_pending_renewal_action_request(Object(WC_Subscription)) #1 /home /ourislan/lifestyle5d.ourislandsvoice.com/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #2 /home/ourislan/lifestyle5d.ourislandsvoice.com/wp-includes /plugin.php(453): WP_Hook->do_action(Array) #3 /home/ourislan/lifestyle5d.ourislandsvoice.com/wp-content/plugins/woocommerce/includes/admin/meta-boxes/class-wc-meta- box-order-actions.php(131): do_action('woocommerce_ord...',对象(WC_Subscription))#4 /home/ourislan/lifestyle5d.ourislandsvoice.com/wp-includes/class-wp-hook.php(286):WC_Meta_Box_Order_Actions::save(812,对象(WP_Post))#5 /home/ ourislan/lifestyle5d.ourislandsvoice.com/wp- in /home/ourislan/lifestyle5d.ourislandsvoice.com/wp-content/plugins/woocommerce-subscriptions/includes/admin/class-wcs-admin-meta-boxes.php 在第 176 行

4

1 回答 1

0

弄清楚了。我需要在函数末尾显式返回 $object。

于 2017-12-14T07:08:12.967 回答