在 WooCommerce 管理订单列表中添加自定义操作按钮

问题描述 投票:0回答:2

我已按照此说明为我的 WooCommerce 订单添加自定义订单状态。

我找不到创建自定义操作按钮的方法,该按钮可以从管理订单列表页面将订单状态更改为我的自定义状态,如下屏幕截图所示:

This image shows where I want it to be.

我希望为具有“处理”状态的订单显示此自定义操作按钮。

我在 WooCommerce 文档中找不到任何答案。

有应用这些按钮的钩子吗?
如何将其添加到

function.php

谢谢你

php wordpress woocommerce status orders
2个回答
10
投票

要恢复,您已创建自定义订单状态“wc-parcial”(使用问题中提供的说明代码),并且您需要将相关操作按钮添加到订单管理列表。

对于 WooCommerce 版本 3.3+,请检查更新 在下面这个答案

您需要使用挂钩在

woocommerce_admin_order_actions
过滤器挂钩中的自定义函数

// Add your custom order status action button (for orders with "processing" status)
add_filter( 'woocommerce_admin_order_actions', 'add_custom_order_status_actions_button', 100, 2 );
function add_custom_order_status_actions_button( $actions, $order ) {
    // Display the button for all orders that have a 'processing' status
    if ( $order->has_status( array( 'processing' ) ) ) {

        // Get Order ID (compatibility all WC versions)
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        // Set the action button
        $actions['parcial'] = array(
            'url'       => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_mark_order_status&status=parcial&order_id=' . $order_id ), 'woocommerce-mark-order-status' ),
            'name'      => __( 'Envio parcial', 'woocommerce' ),
            'action'    => "view parcial", // keep "view" class for a clean button CSS
        );
    }
    return $actions;
}

// Set Here the WooCommerce icon for your action button
add_action( 'admin_head', 'add_custom_order_status_actions_button_css' );
function add_custom_order_status_actions_button_css() {
    echo '<style>.view.parcial::after { font-family: woocommerce; content: "\e005" !important; }</style>';
}

代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。

此代码经过测试并且可以工作。你会得到:

enter image description here


4
投票

Woocommerce 3.3+ 的更新版本

要恢复,您已创建自定义订单状态“wc-parcial”(使用问题中提供的说明代码),并且您需要向订单管理列表添加相关操作按钮。

新代码:

// Add your custom order status action button (for orders with "processing" status)
add_filter( 'woocommerce_admin_order_actions', 'add_custom_order_status_actions_button', 100, 2 );
function add_custom_order_status_actions_button( $actions, $order ) {
    // Display the button for all orders that have a 'processing' status
    if ( $order->has_status( array( 'processing' ) ) ) {

        // The key slug defined for your action button
        $action_slug = 'parcial';
        
        // Set the action button
        $actions[$action_slug] = array(
            'url'       => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_mark_order_status&status=parcial&order_id=' . $order->get_id() ), 'woocommerce-mark-order-status' ),
            'name'      => __( 'Envio parcial', 'woocommerce' ),
            'action'    => $action_slug,
        );
    }
    return $actions;
}

// Set Here the WooCommerce icon for your action button
add_action( 'admin_head', 'add_custom_order_status_actions_button_css' );
function add_custom_order_status_actions_button_css() {
    $action_slug = "parcial"; // The key slug defined for your action button
    
    echo '<style>.wc-action-button-'.$action_slug.'::after { font-family: woocommerce !important; content: "\e029" !important; }</style>';
}

代码位于子主题的functions.php文件中(或插件中)。经过测试且有效

重要提示:确保您在“屏幕选项”选项卡中启用了“操作”复选框(位于右侧)

enter image description here


添加高性能订单存储(HPOS):

将最后一个函数替换为:

add_action( 'admin_head', 'add_custom_order_status_actions_button_css' );
function add_custom_order_status_actions_button_css() {
    $action_slug = "parcial"; // The key slug defined for your action button

    echo '<style>.widefat .column-wc_actions a.'.$action_slug.'::after { font-family: woocommerce; content: "\e029" !important; }</style>';
}
© www.soinside.com 2019 - 2024. All rights reserved.