admin 管理员组文章数量: 1184232
Trying to use this code in function.php, but not working.. Any idea whats wrong?
// To change the amount of days just change '-7 days' to your liking
function get_unpaid_submitted() {
global $wpdb;
$unpaid_submitted = $wpdb->get_col( $wpdb->prepare( "
SELECT posts.ID
FROM {$wpdb->posts} AS posts
WHERE posts.post_status = 'wc-processing'
AND posts.post_date < %s
", date( 'Y-m-d H:i:s', strtotime('-14 days') ) ) );
return $unpaid_submitted;
}
// This excludes check payment type.
function wc_cancel_unpaid_submitted() {
$unpaid_submit = get_unpaid_submitted();
if ( $unpaid_submit ) {
foreach ( $unpaid_submit as $unpaid_order ) {
$order = wc_get_order( $unpaid_order );
$cancel_order = True;
foreach ( $order->get_items() as $item_key => $item_values) {
$manage_stock = get_post_meta( $item_values['variation_id'], '_manage_stock', true );
if ( $manage_stock == "no" ) {
$payment_method = $order->get_payment_method();
if ( $payment_method == "cheque" ) {
$cancel_order = False;
}
}
}
if ( $cancel_order == True ) {
$order -> update_status( 'cancelled', __( 'Pagamento não identificado e cancelado.', 'woocommerce') );
}
}
}
}
add_action( 'woocommerce_cancel_unpaid_submitted', 'wc_cancel_unpaid_submitted' );
/* End of code. */
Trying to use this code in function.php, but not working.. Any idea whats wrong?
// To change the amount of days just change '-7 days' to your liking
function get_unpaid_submitted() {
global $wpdb;
$unpaid_submitted = $wpdb->get_col( $wpdb->prepare( "
SELECT posts.ID
FROM {$wpdb->posts} AS posts
WHERE posts.post_status = 'wc-processing'
AND posts.post_date < %s
", date( 'Y-m-d H:i:s', strtotime('-14 days') ) ) );
return $unpaid_submitted;
}
// This excludes check payment type.
function wc_cancel_unpaid_submitted() {
$unpaid_submit = get_unpaid_submitted();
if ( $unpaid_submit ) {
foreach ( $unpaid_submit as $unpaid_order ) {
$order = wc_get_order( $unpaid_order );
$cancel_order = True;
foreach ( $order->get_items() as $item_key => $item_values) {
$manage_stock = get_post_meta( $item_values['variation_id'], '_manage_stock', true );
if ( $manage_stock == "no" ) {
$payment_method = $order->get_payment_method();
if ( $payment_method == "cheque" ) {
$cancel_order = False;
}
}
}
if ( $cancel_order == True ) {
$order -> update_status( 'cancelled', __( 'Pagamento não identificado e cancelado.', 'woocommerce') );
}
}
}
}
add_action( 'woocommerce_cancel_unpaid_submitted', 'wc_cancel_unpaid_submitted' );
/* End of code. */
Share
Improve this question
edited Aug 15, 2020 at 12:22
rozklad
6321 gold badge6 silver badges15 bronze badges
asked Aug 14, 2020 at 8:37
Morten HansenMorten Hansen
12 bronze badges
1 Answer
Reset to default 0You need to know that you can do it directly with a function in your functions.php file or a plugin, but it's not the best solution. For me the best solution is a cron job associate with your action because you wanna check each hour/day/week/or month the payment status of your orders. You don't want connect yourself on the website for the function work each time you want check this status.
(btw, sorry for my bad english)
For answer to your question, I see your code here: https://wordpress.org/support/topic/expiring-on-hold-cheque-orders-after-x-days/#post-10000589
I think this solution'll work only if you add the action to the cron job.
本文标签: WooCommerce Auto cancel orders status from processing after X days
版权声明:本文标题:WooCommerce , Auto cancel orders status from processing after X days 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1736253403a1726394.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论