删除 WooCommerce 中管理员的“客户付款页面”限制(pay_for_order 功能?)

tro*_*r84 1 php wordpress woocommerce

我\xe2\x80\x99m 有兴趣删除阻止客户以外的任何人为其订单付款的限制,以便当客户自行付款时遇到困难时,管理员可以介入并代表客户进行付款任何原因。

\n\n

目前,如果客户下订单但付款失败,订单编辑屏幕中指向 \xe2\x80\x98客户付款页面\xe2\x80\x99 的链接会将您带到一条消息,其中显示:

\n\n
\n

该订单无法支付。如果您需要帮助,请联系我们。\n

\n
\n\n

这是限制 I\xe2\x80\x99m 试图删除 \xe2\x80\x93 I\xe2\x80\x99ve 将其范围缩小到此代码;

\n\n
// Logged in customer trying to pay for someone else's order.\n            if ( ! current_user_can( 'pay_for_order', $order_id ) ) {\n                throw new Exception( __( 'This order cannot be paid \nfor. Please contact us if you need assistance.', 'woocommerce' ) );\n            }\n
Run Code Online (Sandbox Code Playgroud)\n\n

文件中包含:

\n\n

/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php

\n\n

这似乎引用了用户的能力。

\n\n

为管理员提供对任何订单 \xe2\x80\x98pay_for_order\xe2\x80\x99 的能力的最佳方式是什么?

\n\n

非常感谢您提供的任何帮助

\n

Orl*_* P. 5

这是一个非常粗略的例子,但这正是您正在寻找的。您可以将其添加到您的functions.php 文件中。这将为管理员角色提供该能力。

function allow_admin_to_pay_for_order(){

     $administrator = get_role('administrator');
     $administrator->add_cap( 'pay_for_order' );
}

add_action('init', 'allow_admin_to_pay_for_order');
Run Code Online (Sandbox Code Playgroud)