14 天后在我帐户的 WooCommerce 订单页面中隐藏自定义操作按钮

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

我在 WooCommerce 中我的帐户的订单页面上创建了一个自定义操作按钮 "Request Refund"。我在看,有什么方法可以在订单完成后 14 天后隐藏此按钮。

我找了很多,都没有类似的解决办法。任何帮助将不胜感激。

这是我的代码:

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;
}

If you want to hide the button after 14 days from the order date then you can just add a small check to your if block and that will do.

示例代码如下:

function add_request_refund($actions, $order)
{
    $order_date = date_create($order->get_date_created()->date('Y-m-d'));
    $current_date = date_create(date('Y-m-d'));


    $diff = date_diff($order_date, $current_date);
    //print_r($diff);

    if ($order->has_status('completed') && ($diff->days <= 14)) //check this line
    {
        $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);

参考:date_diff()

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;
}

这应该有效。在我这边测试过!