WooCommerce展示自定义专栏

Chr*_*ann 13 wordpress wordpress-plugin woocommerce

我想在WooCommerce的后端显示一个额外的列(在Orders概述中).该列应包含我定义的自定义字段(交付日期).

这该怎么做?

小智 37

如果有人仍然需要它 - 有关如何在Woocommerce订单列表中添加新列的说明.无需取消设置默认列,只需将其添加到functions.php中,您的代码将对更新有效.

1.定义列位置和名称

add_filter( 'manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION' );
function MY_COLUMNS_FUNCTION($columns){
    $new_columns = (is_array($columns)) ? $columns : array();
    unset( $new_columns['order_actions'] );

    //edit this for you column(s)
    //all of your columns will be added before the actions column
    $new_columns['MY_COLUMN_ID_1'] = 'MY_COLUMN_1_TITLE';
    $new_columns['MY_COLUMN_ID_2'] = 'MY_COLUMN_2_TITLE';
    //stop editing

    $new_columns['order_actions'] = $columns['order_actions'];
    return $new_columns;
}
Run Code Online (Sandbox Code Playgroud)

2.对于每个自定义列,显示值

add_action( 'manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2 );
function MY_COLUMNS_VALUES_FUNCTION($column){
    global $post;
    $data = get_post_meta( $post->ID );

    //start editing, I was saving my fields for the orders as custom post meta
    //if you did the same, follow this code
    if ( $column == 'MY_COLUMN_ID_1' ) {    
        echo (isset($data['MY_COLUMN_1_POST_META_ID']) ? $data['MY_COLUMN_1_POST_META_ID'] : '');
    }
    if ( $column == 'MY_COLUMN_ID_2' ) {    
        echo (isset($data['MY_COLUMN_2_POST_META_ID']) ? $data['MY_COLUMN_2_POST_META_ID'] : '');
    }
    //stop editing
}
Run Code Online (Sandbox Code Playgroud)

3.(可选)使列可排序的功能

add_filter( "manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION' );
function MY_COLUMNS_SORT_FUNCTION( $columns ) {
    $custom = array(
        //start editing

        'MY_COLUMN_ID_1'    => 'MY_COLUMN_1_POST_META_ID',
        'MY_COLUMN_ID_2'    => 'MY_COLUMN_2_POST_META_ID'

        //stop editing
    );
    return wp_parse_args( $custom, $columns );
}
Run Code Online (Sandbox Code Playgroud)

  • @Dre第一个过滤器需要稍高的优先级,然后默认值为10.当我从一个插件运行它时使其工作:`add_filter('manage_edit-shop_order_columns','MY_COLUMNS_FUNCTION',11);` (4认同)
  • 可能因为WooCommerce故意更新和更改了他们的代码而无法工作,试图通过向这个确切结果收取49美元来敲诈我们所有人.http://www.woothemes.com/products/admin-custom-order-fields/ (2认同)

小智 0

我现在遇到了 Woocommerce。添加了自定义字段个人注册号 - 现在希望将其显示在订单概览页面中。

我已设法添加该列 - 但仍然无法获取每个订单的自定义字段的值。

这是我所做的:

// Removed Existing Order Page collumns
remove_filter('manage_edit-shop_order_columns', 'woocommerce_edit_order_columns');

// Added My own filter to Show the PRN - Personal Registration field
add_filter('manage_edit-shop_order_columns', 'omak_edit_order_columns');

// The omak_edit_order_columns definition
/*** Taken from admin/post_types/shop_order.php ***/
function omak_edit_order_columns($columns){
    global $woocommerce;

    $columns = array();

    $columns["cb"]              = "<input type=\"checkbox\" />";
    $columns["order_status"]        = __( 'Status', 'woocommerce' );    
    $columns["order_title"]         = __( 'Order', 'woocommerce' );
    $columns["order_prn"]           = __( 'PRN', 'woocommerce' );    // This is the line which added the column after the Title Column
    $columns["billing_address"]     = __( 'Billing', 'woocommerce' );
    $columns["shipping_address"]    = __( 'Shipping', 'woocommerce' );
    $columns["total_cost"]      = __( 'Order Total', 'woocommerce' );
    $columns["order_comments"]  = '<img alt="' . esc_attr__( 'Order Notes', 'woocommerce' ) . '" src="' . $woocommerce->plugin_url() . '/assets/images/order-notes_head.png" class="tips" data-tip="' . __( 'Order Notes', 'woocommerce' ) . '" width="12" height="12" />';

    $columns["note"]                = '<img src="' . $woocommerce->plugin_url() . '/assets/images/note_head.png" alt="' . __( 'Customer Notes', 'woocommerce' ) . '" class="tips" data-tip="' . __( 'Customer Notes', 'woocommerce' ) . '" width="12" height="12" />';

    $columns["order_date"]          = __( 'Date', 'woocommerce' );
    $columns["order_actions"]       = __( 'Actions', 'woocommerce' );

    return $columns;
}
Run Code Online (Sandbox Code Playgroud)

让我知道是否对您有帮助...

我需要处理如何获取每个订单的值。

正如评论:函数定义存在于 WooCommerce 插件的 shop_order.php 中。如果有人解决了这个问题或者知道如何做,请告诉我。

谢谢,(抱歉,正忙于某件事,所以无法回读以检查错误)