基于 将列添加到 WooCommerce (+ HPOS) 中的管理订单列表答案代码,我在 wc-orders 仪表板中添加自定义列。但我无法让它工作。
这些列显示在我的 wc-orders 仪表板上,但它没有获取订单计数的元数据。它只是显示没有任何价值。
这是我在子主题的functions.php中输入的代码
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'add_wc_order_list_custom_column' );
function add_wc_order_list_custom_column( $columns ) {
$reordered_columns = array();
// Inserting columns to a specific location
foreach( $columns as $key => $column){
$reordered_columns[$key] = $column;
if( $key === 'order_status' ){
// Inserting after "Status" column
$reordered_columns['my-column1'] = __( 'Title1','customer_order_count');
$reordered_columns['my-column2'] = __( 'Title2','theme_domain');
}
}
return $reordered_columns;
}
add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_wc_order_list_custom_column_content', 10, 2);
function display_wc_order_list_custom_column_content( $column, $order ){
switch ( $column )
{
case 'my-column1' :
// Get custom order metadata
$value = $order->get_meta('$orders_count');
if ( ! empty($value) ) {
echo $value;
}
case 'my-column2' :
// Get custom order metadata
$value = $order->get_meta('_the_meta_key2');
if ( ! empty($value) ) {
echo $value;
}
// For testing (to be removed) - Empty value case
else {
echo '<small>(<em>no value</em>)</small>';
}
break;
}
}
您正在使用
$orders_count
作为meta_key,因此您应该尝试删除开头的字符$
。
现在,由于客户订单计数设置为用户元数据,您应该使用不同的内容,例如:
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'add_wc_order_list_custom_column' );
function add_wc_order_list_custom_column( $columns ) {
$reordered_columns = array();
// Inserting columns to a specific location
foreach( $columns as $key => $column){
$reordered_columns[$key] = $column;
if( $key === 'order_status' ){
$reordered_columns['order-count'] = __( 'Order count','woocommerce');
}
}
return $reordered_columns;
}
add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_wc_order_list_custom_column_content', 10, 2);
function display_wc_order_list_custom_column_content( $column, $order ){
if ( $column === 'order-count' ) {
echo wc_get_customer_order_count( $order->get_customer_id() ); // Display customer orders count
}
}
代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。