最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Button to update order status Woocommerce with WC Marketplace

programmeradmin2浏览0评论

I am using Woocommerce with WCMP (WC Markeplace), however vendors are not allowed to update the order status (i.e.: from 'processing' to 'completed').

There's no option in their backend, so I tryed to add a custom button to handle that!

Any help would be amazing! Here's my code (I found it somewhere around here):

<form method="post">
<input type="hidden" name="mark_as_received" value="true">
<input type="hidden" name="order_id" value="<?php echo esc_attr($order_id);?>">
<?php wp_nonce_field( 'so_38792085_nonce_action', '_so_38792085_nonce_field' ); ?> 
<input type="submit" value="I Got It!">
</form>

And to handle the form:

<?php
add_action( 'wp_loaded', 'custom_button_to_update' );
function custom_button_to_update(){
    // not a "mark as received" form submission
    if ( ! isset( $_POST['mark_as_received'] ) ){
        return;
    }

    // basic security check
    if ( ! isset( $_POST['_so_38792085_nonce_field'] ) || ! wp_verify_nonce( $_POST['_so_38792085_nonce_field'], 'so_38792085_nonce_action' ) ) {   
        return;
    } 

    // make sure order id is submitted
    if ( ! isset( $_POST['order_id'] ) ){
        $order_id = intval( $_POST['order_id'] );
        $order = wc_get_order( $order_id );
        $order->update_status( "completed" );
        return;
    }  
    else {
        echo "failed";
    } 
}

Thank you for your help in advance!

I am using Woocommerce with WCMP (WC Markeplace), however vendors are not allowed to update the order status (i.e.: from 'processing' to 'completed').

There's no option in their backend, so I tryed to add a custom button to handle that!

Any help would be amazing! Here's my code (I found it somewhere around here):

<form method="post">
<input type="hidden" name="mark_as_received" value="true">
<input type="hidden" name="order_id" value="<?php echo esc_attr($order_id);?>">
<?php wp_nonce_field( 'so_38792085_nonce_action', '_so_38792085_nonce_field' ); ?> 
<input type="submit" value="I Got It!">
</form>

And to handle the form:

<?php
add_action( 'wp_loaded', 'custom_button_to_update' );
function custom_button_to_update(){
    // not a "mark as received" form submission
    if ( ! isset( $_POST['mark_as_received'] ) ){
        return;
    }

    // basic security check
    if ( ! isset( $_POST['_so_38792085_nonce_field'] ) || ! wp_verify_nonce( $_POST['_so_38792085_nonce_field'], 'so_38792085_nonce_action' ) ) {   
        return;
    } 

    // make sure order id is submitted
    if ( ! isset( $_POST['order_id'] ) ){
        $order_id = intval( $_POST['order_id'] );
        $order = wc_get_order( $order_id );
        $order->update_status( "completed" );
        return;
    }  
    else {
        echo "failed";
    } 
}

Thank you for your help in advance!

Share Improve this question asked May 8, 2019 at 13:34 João TeixeiraJoão Teixeira 1087 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 2

Thank you all, I did found the answer HERE.

I adapt a bit the code to my needs and added a button.

html:

<div>
  <form method="post" name="update_status">             
    <button type="submit" name="marked_as_completed">Mark as Completed</button>
  </form>
</div>

php:

<?php 
        if (isset($_POST["marked_as_completed"])) 
        {
        $completed_status = $order->get_id();
        $order = new WC_Order($completed_status);
        $order->update_status('completed', 'order_note');
        echo '<h2 style="color:green;">Completato &check;</h2>';  
        } 
?> 
发布评论

评论列表(0)

  1. 暂无评论