Remove ‘Customer payment page’ restrictions for admins in WooCommerce (pay_for_order capability?)
I’m interested in removing the restriction which prevents anyone other than the customer paying for their order, so that an admin can step in and do the payment on behalf of the customer for when customers have trouble making the payment themselves for any reason.
Currently if a customer makes an order and fails the payment, the link to ‘Customer payment page’ from the order edit screen takes you to a message that says:
This order cannot be paid for. Please contact us if you need
assistance.
This is the restriction I’m trying to remove – I’ve narrowed it down to this code;
// Logged in customer trying to pay for someone else's order.
if ( ! current_user_can( 'pay_for_order', $order_id ) ) {
throw new Exception( __( 'This order cannot be paid
for. Please contact us if you need assistance.', 'woocommerce' ) );
}
Which is in file:
/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php
Which appears to reference a user capability.
What would be the best way of giving admins the capability to ‘pay_for_order’ for any order?
Many thanks for any help you can give
php wordpress woocommerce
add a comment |
I’m interested in removing the restriction which prevents anyone other than the customer paying for their order, so that an admin can step in and do the payment on behalf of the customer for when customers have trouble making the payment themselves for any reason.
Currently if a customer makes an order and fails the payment, the link to ‘Customer payment page’ from the order edit screen takes you to a message that says:
This order cannot be paid for. Please contact us if you need
assistance.
This is the restriction I’m trying to remove – I’ve narrowed it down to this code;
// Logged in customer trying to pay for someone else's order.
if ( ! current_user_can( 'pay_for_order', $order_id ) ) {
throw new Exception( __( 'This order cannot be paid
for. Please contact us if you need assistance.', 'woocommerce' ) );
}
Which is in file:
/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php
Which appears to reference a user capability.
What would be the best way of giving admins the capability to ‘pay_for_order’ for any order?
Many thanks for any help you can give
php wordpress woocommerce
hey you can add the cabaility to the admin role see this post for an example wordpress.stackexchange.com/questions/74853/… or it might just be easier to modify that code to allow admins meaning adding an or condition to that if statement. I would recommend the first as if you modify this file it will be updated in an update.
– Orlando P.
Nov 27 '18 at 21:42
add a comment |
I’m interested in removing the restriction which prevents anyone other than the customer paying for their order, so that an admin can step in and do the payment on behalf of the customer for when customers have trouble making the payment themselves for any reason.
Currently if a customer makes an order and fails the payment, the link to ‘Customer payment page’ from the order edit screen takes you to a message that says:
This order cannot be paid for. Please contact us if you need
assistance.
This is the restriction I’m trying to remove – I’ve narrowed it down to this code;
// Logged in customer trying to pay for someone else's order.
if ( ! current_user_can( 'pay_for_order', $order_id ) ) {
throw new Exception( __( 'This order cannot be paid
for. Please contact us if you need assistance.', 'woocommerce' ) );
}
Which is in file:
/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php
Which appears to reference a user capability.
What would be the best way of giving admins the capability to ‘pay_for_order’ for any order?
Many thanks for any help you can give
php wordpress woocommerce
I’m interested in removing the restriction which prevents anyone other than the customer paying for their order, so that an admin can step in and do the payment on behalf of the customer for when customers have trouble making the payment themselves for any reason.
Currently if a customer makes an order and fails the payment, the link to ‘Customer payment page’ from the order edit screen takes you to a message that says:
This order cannot be paid for. Please contact us if you need
assistance.
This is the restriction I’m trying to remove – I’ve narrowed it down to this code;
// Logged in customer trying to pay for someone else's order.
if ( ! current_user_can( 'pay_for_order', $order_id ) ) {
throw new Exception( __( 'This order cannot be paid
for. Please contact us if you need assistance.', 'woocommerce' ) );
}
Which is in file:
/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php
Which appears to reference a user capability.
What would be the best way of giving admins the capability to ‘pay_for_order’ for any order?
Many thanks for any help you can give
php wordpress woocommerce
php wordpress woocommerce
asked Nov 27 '18 at 19:37
trogdoor84trogdoor84
163
163
hey you can add the cabaility to the admin role see this post for an example wordpress.stackexchange.com/questions/74853/… or it might just be easier to modify that code to allow admins meaning adding an or condition to that if statement. I would recommend the first as if you modify this file it will be updated in an update.
– Orlando P.
Nov 27 '18 at 21:42
add a comment |
hey you can add the cabaility to the admin role see this post for an example wordpress.stackexchange.com/questions/74853/… or it might just be easier to modify that code to allow admins meaning adding an or condition to that if statement. I would recommend the first as if you modify this file it will be updated in an update.
– Orlando P.
Nov 27 '18 at 21:42
hey you can add the cabaility to the admin role see this post for an example wordpress.stackexchange.com/questions/74853/… or it might just be easier to modify that code to allow admins meaning adding an or condition to that if statement. I would recommend the first as if you modify this file it will be updated in an update.
– Orlando P.
Nov 27 '18 at 21:42
hey you can add the cabaility to the admin role see this post for an example wordpress.stackexchange.com/questions/74853/… or it might just be easier to modify that code to allow admins meaning adding an or condition to that if statement. I would recommend the first as if you modify this file it will be updated in an update.
– Orlando P.
Nov 27 '18 at 21:42
add a comment |
1 Answer
1
active
oldest
votes
This is a really rough example but it is what you are looking for. You can add this to your functions.php file. This will give the administrator role that capability.
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');
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53506914%2fremove-customer-payment-page-restrictions-for-admins-in-woocommerce-pay-for-o%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This is a really rough example but it is what you are looking for. You can add this to your functions.php file. This will give the administrator role that capability.
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');
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
add a comment |
This is a really rough example but it is what you are looking for. You can add this to your functions.php file. This will give the administrator role that capability.
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');
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
add a comment |
This is a really rough example but it is what you are looking for. You can add this to your functions.php file. This will give the administrator role that capability.
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');
This is a really rough example but it is what you are looking for. You can add this to your functions.php file. This will give the administrator role that capability.
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');
answered Nov 27 '18 at 21:44
Orlando P.Orlando P.
394113
394113
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
add a comment |
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
Thank you for this, I will give this a try :)
– trogdoor84
Nov 28 '18 at 12:46
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53506914%2fremove-customer-payment-page-restrictions-for-admins-in-woocommerce-pay-for-o%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
hey you can add the cabaility to the admin role see this post for an example wordpress.stackexchange.com/questions/74853/… or it might just be easier to modify that code to allow admins meaning adding an or condition to that if statement. I would recommend the first as if you modify this file it will be updated in an update.
– Orlando P.
Nov 27 '18 at 21:42