Wordpress教程 2024年09月20日
0 收藏 0 点赞 39 浏览 3574 个字

 

// 添加自定义列到订单列表
add_filter('manage_woocommerce_page_wc-orders_columns', 'add_custom_woocommerce_order_columns', 15);
function add_custom_woocommerce_order_columns($columns) {
    // 添加多个自定义列标题
    $columns['b_site_order_id'] = __('Site Order ID', 'woocommerce');
    $columns['external_uuid'] = __('External UUID', 'woocommerce');
    $columns['selected_redirect_domain'] = __('Redirect Domain', 'woocommerce');
    
    return $columns;
}

// 显示自定义字段值
add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_custom_order_column_values', 10, 2);
function display_custom_order_column_values($column, $order_id) {
    $order = wc_get_order($order_id);

    switch ($column) {
        case 'b_site_order_id':
            $site_order_id = $order->get_meta('b_site_order_id');
            echo empty($site_order_id) ? __('No data', 'woocommerce') : esc_html($site_order_id);
            break;
        case 'external_uuid':
            $external_uuid = $order->get_meta('external_uuid');
            echo empty($external_uuid) ? __('No data', 'woocommerce') : esc_html($external_uuid);
            break;
        case 'selected_redirect_domain':
            $redirect_domain = $order->get_meta('selected_redirect_domain');
            echo empty($redirect_domain) ? __('No data', 'woocommerce') : esc_html($redirect_domain);
            break;
    }
}

 

美化版


add_filter('manage_woocommerce_page_wc-orders_columns', 'add_custom_woocommerce_order_columns', 15);
function add_custom_woocommerce_order_columns($columns) {
    $columns['b_site_order_id'] = __('【Site Order ID】', 'woocommerce');
    $columns['external_uuid'] = __('【External UUID】', 'woocommerce');
    $columns['selected_redirect_domain'] = __('【Redirect Domain】', 'woocommerce');
    
    return $columns;
}
add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_custom_order_column_values', 10, 2);
function display_custom_order_column_values($column, $order_id) {
    $order = wc_get_order($order_id);

    switch ($column) {
        case 'b_site_order_id':
            $site_order_id = $order->get_meta('b_site_order_id');
            echo empty($site_order_id) ? 
                '<mark class="custom-field custom-field-b-site-order-id"><span>' . __('No data', 'woocommerce') . '</span></mark>' : 
                '<mark class="custom-field custom-field-b-site-order-id"><span>' . esc_html($site_order_id) . '</span></mark>';
            break;
        case 'selected_redirect_domain':
            $redirect_domain = $order->get_meta('selected_redirect_domain');
            echo empty($redirect_domain) ? 
                '<mark class="custom-field custom-field-selected-redirect-domain"><span>' . __('No data', 'woocommerce') . '</span></mark>' : 
                '<mark class="custom-field custom-field-selected-redirect-domain"><span>' . esc_html($redirect_domain) . '</span></mark>';
            break;
        case 'external_uuid':
            $external_uuid = $order->get_meta('external_uuid');
            echo empty($external_uuid) ? __('No data', 'woocommerce') : esc_html($external_uuid);
            break;
    }
}
add_action('admin_head', 'custom_admin_css');
function custom_admin_css() {
    ?>
<style>
    .custom-field-b-site-order-id {
        display: inline-flex;
        line-height: 2.5em;
        color: #fff;
        background: #06f;
        border-radius: 4px;
        border-bottom: 1px solid rgba(0, 0, 0, .05);
        margin: -.25em 0;
        cursor: inherit !important;
        white-space: nowrap;
        max-width: 100%;
    }
    .custom-field-b-site-order-id span {
        margin: 0 1em;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .custom-field-selected-redirect-domain {
        display: inline-flex;
        line-height: 2.5em;
        color: #fff;
        background: #ff3045;
        border-radius: 4px;
        border-bottom: 1px solid rgba(0, 0, 0, .05);
        margin: -.25em 0;
        cursor: inherit !important;
        white-space: nowrap;
        max-width: 100%;
        margin: 0 1em;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .custom-field-selected-redirect-domain span {
        margin: 0 1em;
        overflow: hidden;
        text-overflow: ellipsis;
    }
</style>

    <?php
}

 

除了上面的方法,有些朋友在开发的时候,可能还使用过 get_post, get_post_meta 这样的方法来获取订单数据,在WooCommerce 使用基于文章类型的订单数据结构来存储数据时,这当然是没问题的。但是如果 WooCommerce 使用的HPOS高性能订单数据结构来存储数据时,使用基于文章类型的订单获取方法可能就获取不到数据了。所以建议大家在以后的开发过程中,尽量使用 WC_Order 类来获取数据,不管 WooCommerce 的数据结构怎么变化,这个类的方法时不会轻易变更的,这样就能保证我们主题和插件的向前兼容性, 减少维护工作。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.mizhanw.com/blog/4949.html

相关推荐
实现 WordPress 自动更新所有文章的发布日期为当天的日期
//二开自动更新文章日期为当天发布。 //设置宝塔面板中的定时任务,通过访问带有?update_posts=run的链接触发文章更新.如:c…
日期:2024-09-22 点赞:0 阅读:34
WooCommerce订单列表显示购买产品
// 为 Legacy CPT-based 订单添加自定义列 add_filter('manage_edit-shop_order_colu…
日期:2024-09-20 点赞:0 阅读:63
WooCommerce Order 类的所有Get方法,以面向对象的方法获取订单数据
在开发WooCommerce插件或者与第三方系统交互时,我们需要获取 WooCommerce 订单的数据,WooCommerce的 WC_O…
日期:2024-09-20 点赞:0 阅读:40
为WooCommerce后台订单列表添加按自定义字段功能
  // 添加自定义列到订单列表 add_filter('manage_woocommerce_page_wc-orders_co…
日期:2024-09-20 点赞:0 阅读:39
添加删除 WooCommerce 数据列表中的数据列
转载:添加删除 WooCommerce 数据列表中的数据列 _WordPress智库 (wpzhiku.com) 在 WooCommerce…
日期:2024-09-20 点赞:0 阅读:49
WooCommerce的结账页面的订单摘要中,在商品数量后添加加减按钮
关于 WooCommerce 结账页面的定制内容在网上有大量讨论。为什么呢?因为结账页面无疑是任何 WooCommerce 网站的关键页面!…
日期:2024-08-11 点赞:0 阅读:110
发表评论
暂无评论

还没有评论呢,快来抢沙发~