向 WooCommerce 我的帐户订单添加跟踪发货按钮,用于根据订单 ID 跟踪订单

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

我正在尝试将“跟踪发货”按钮添加到 WooCommerce 我的帐户订单中,使用此代码跟踪订单 ID 中的订单,但无法正常工作,请帮忙,我错在哪里?在我的子主题的 funtions.php 文件中使用。

add_filter( 'woocommerce_my_account_my_orders_actions', 'my_code_add_myaccount_order_track_button', 10, 2 );

function my_code_add_myaccount_order_track_button( $actions, $order ) {

    // Retrieve tracking link based on order ID (replace this with your logic to get the tracking link)
    $order_id = $order->get_id();
    $tracking_link = get_post_meta( $order_id, '_tracking_link', true ); // Assuming you store the tracking link in a custom field

    if ( ! empty( $tracking_link ) ) {
        $actions['track'] = array(
            'url'  => $tracking_link,
            'name' => __( 'Track', 'woocommerce' ),
        );
    }

    return $actions;
}
php wordpress woocommerce
1个回答
0
投票

随着 WooCommerce 逐步迁移到自定义数据库表,您应该使用 CRUD 方法,但不再使用 WordPress 帖子元功能,特别是在启用了 高性能订单存储 的情况下。

假设客户订单有一个注册为自定义订单元数据的跟踪 URL,请尝试以下代码替换:

add_filter( 'woocommerce_my_account_my_orders_actions', 'my_account_my_orders_tracking_button', 10, 2 );
function my_account_my_orders_tracking_button( $actions, $order ) {
    // Get tracking link custom metadata
    $tracking_link = $order->get_meta('_tracking_link'); 

    if ( ! empty( $tracking_link ) ) {
        $actions['track'] = array(
            'url'  => $tracking_link,
            'name' => __( 'Track', 'woocommerce' ),
        );
    }
    return $actions;
}

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

© www.soinside.com 2019 - 2024. All rights reserved.