如何编辑WooCommerce管理员订单页面?

9
我正在使用最新版本的Woocommerce 2.4.12。 我想对管理仪表板下的Woocommerce订单页面进行一些更改,该页面位于woocommerce --> 订单下面。 Woocommerce Orders Page 它在插件--> woocommerce文件夹中的哪个文件里? 我在我的主题中创建了一个woocommerce文件夹来覆盖模板文件。 我想将客户的电话号码添加到ship_to列中。 客户希望在订单页面上看到客户的电话号码。是否有任何方法可以使用functions.php添加钩子并进行更改?

模板文件我相信只是用于电子邮件和前端页面。你到底想做什么? - Reigel Gallarde
你想要更新管理仪表板的订单页面吗?Theme->woo-commerce文件夹用于覆盖前端页面的文件,而不是后端。 - Priya jain
@Reigel 是的,我也这么想。我想将客户的电话号码添加到ship_to栏中。客户希望在订单页面上看到客户的电话号码。 - Vivek Padhye
@Priyajain 有没有什么方法可以使用functions.php,钩子或其他东西? - Vivek Padhye
2个回答

18

尝试将以下代码添加到你的functions.php文件中

add_filter( 'manage_edit-shop_order_columns', 'shop_order_columns' );
function shop_order_columns( $columns ){
    $new_columns = (is_array($columns)) ? $columns : array();

    $new_columns['phone'] = 'Phone';

    return $new_columns;
}

add_action( 'manage_shop_order_posts_custom_column', 'shop_order_posts_custom_column' );
function shop_order_posts_custom_column( $column ){
    global $post, $the_order;

    if ( empty( $the_order ) || $the_order->get_id() != $post->ID ) {
        $the_order = wc_get_order( $post->ID );
    }

    $billing_address = $the_order->get_address();
    if ( $column == 'phone' ) {    
        echo ( isset( $billing_address['phone'] ) ? $billing_address['phone'] : '');
    }
}

定位问题??..

尝试使用以下内容来调用第一个函数

function shop_order_columns($columns){
    $columns = (is_array($columns)) ? $columns : array();

    $phone = array( 'phone' => 'Phone' );
    $position = 5;
    $new_columns = array_slice( $columns, 0, $position, true ) +  $phone;

    return array_merge( $new_columns, $columns );
}

适用于 WooCommerce 3 更新。


完美运行。只是复制了代码。非常感谢!@Reigel - Vivek Padhye
1
确切地说,这不是一个特定于WooCommerce的问题,可以通过WordPress核心过滤器来解决。 - helgatheviking

1
你应该使用manage_shop_order_posts_custom_column动作,并通过检查列名称来更改列数据。
switch( $column ) {

        case 'shipping_address' :
            echo 'sample data';
            break;

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接