Button 在MyAccount-订单查看页面中使用挂钩的两个按钮

Button 在MyAccount-订单查看页面中使用挂钩的两个按钮,button,woocommerce,hook,Button,Woocommerce,Hook,我试图在Woocommerce/MyAccount/查看订单详细信息(不在订单列表中)(再次订单|取消)中添加两个按钮,但我只在已完成订单中看到“再次订单”,而没有在其他状态下看到。谢谢大家! 函数cs\u再次添加订单到我的订单详细信息($actions,$order){ 如果($order->has_status(数组('completed'、'pending'、'processing'、'on hold'、'failed')){ $actions['order-reach']=数组( 'u

我试图在Woocommerce/MyAccount/查看订单详细信息(不在订单列表中)(再次订单|取消)中添加两个按钮,但我只在已完成订单中看到“再次订单”,而没有在其他状态下看到。谢谢大家!

函数cs\u再次添加订单到我的订单详细信息($actions,$order){
如果($order->has_status(数组('completed'、'pending'、'processing'、'on hold'、'failed')){
$actions['order-reach']=数组(
'url'=>wp\u nonce\u url(添加查询参数('order\u reach',$order->id),'woocommerce-order\u reach'),
'name'=>\('Order reach','woocommerce')
);
//取消按钮
$actions['cancel']=数组(
“url”=>不知道,
“name”=>不知道
);
}
返回$actions;
}

添加过滤器('woocommerce\u my\u account\u my\u orders\u details'、'cs\u Addu\u orders\u again\u\u to\u my\u orders\u details',50,2)默认情况下,只有状态为“已完成”的订单才能重新排序。您可以使用以下挂钩添加其他状态:

add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'ywp_filter_order_again' );
function ywp_filter_order_again( $statuses ) {
    return array( 'completed', 'pending', 'processing', 'on-hold', 'failed' );
}
add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'ywp_filter_cancel_order' );
function ywp_filter_cancel_order( $statuses ) {
        return array( 'completed', 'pending', 'processing', 'on-hold', 'failed' );
}
对于“取消订单”按钮:

    $actions['cancel'] = array(
        'url' => $order->get_cancel_order_url( wc_get_page_permalink( 'myaccount' ) ),
        'name' => __( 'Cancel', 'woocommerce' ),
    );

默认情况下,只能取消状态为“挂起”的订单。您可以使用以下挂钩添加其他情况:

add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'ywp_filter_order_again' );
function ywp_filter_order_again( $statuses ) {
    return array( 'completed', 'pending', 'processing', 'on-hold', 'failed' );
}
add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'ywp_filter_cancel_order' );
function ywp_filter_cancel_order( $statuses ) {
        return array( 'completed', 'pending', 'processing', 'on-hold', 'failed' );
}

对非常感谢哈米德,它工作得非常好,我现在可以从任何状态重新订购。第一部分已经解决了,不客气。我更新了代码;)