Search code examples
phpwordpressdatewoocommercehook-woocommerce

Hide a custom action button after 14 days in WooCommerce orders page in my account


I have created a custom action button "Request Refund" on orders page of my-account in WooCommerce. I was looking, is there any way to hide this button after 14-days since order gets completed.

I have searched a lot, but no similar solution. Any help will be appreciated.

Here is my code:

function add_request_refund($actions, $order)
{
    if ($order->has_status('completed'))
    {
        $actions['refund_request'] = array(
            'url' => url_of_request_refund($order),
            'name' => __('Request Refund', 'my-textdomain'),
        );
    }
    return $actions;
}

add_filter('woocommerce_my_account_my_orders_actions', 'add_request_refund', 100, 2);

function url_of_request_refund($order)
{

    $page_id = 4007;
    $refund_url = trailingslashit(get_page_link($page_id)) . '?order=' . $order->get_order_number();
    return $refund_url;
}

Solution

  • function add_request_refund( $actions, $order ) {
        $order_date = $order->order_date;
        $getTodayDate = date('m/d/Y');
        $date1 = date_create($order_date);
        $date2 = date_create($getTodayDate);
    
          //difference between two dates
         $diff = date_diff($date2,$date1);
    
    
        if ( $order->has_status( 'completed' ) && $diff->days < 15 ) {
        $actions['refund_request'] = array(
            'url'  => url_of_request_refund( $order ),
            'name' => __( 'Request Refund', 'my-textdomain' ),
        );
    }
    return $actions;
    }
    add_filter( 'woocommerce_my_account_my_orders_actions', 'add_request_refund', 100, 2 );
    
    function url_of_request_refund( $order ) {
    
    $page_id = 4007;
    $refund_url = trailingslashit( get_page_link( $page_id ) ) . '?order=' . $order->get_order_number();
    return $refund_url;
    }
    

    This should work. Tested at my side!