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;
}
这应该有效。在我这边测试过!
我在 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;
}
这应该有效。在我这边测试过!