如何在Woocommerce管理产品列表中添加/删除列

2022-08-30 17:02:33

我想在查看产品列表时自定义Woocommerce管理区域中的列。

具体来说,我想删除一些列,并添加几个自定义字段列。

我尝试了许多在线列出的解决方案,我可以删除列并添加新的列,如下所示:

add_filter( 'manage_edit-product_columns', 'show_product_order',15 );
function show_product_order($columns){

   //remove column
   unset( $columns['tags'] );

   //add column
   $columns['offercode'] = __( 'Offer Code'); 

   return $columns;
}

但是,如何使用实际产品数据填充新列(在本例中为名为“优惠代码”的自定义字段)?


答案 1

筛选器仅用于实际添加列。若要控制每个帖子(产品)的列中显示的内容,可以使用该操作。为每个帖子的每个自定义列调用此操作,并传递两个参数:和 。manage_edit-{post_type}_columnsmanage_{post_type}_posts_custom_column$column$postid

使用此操作非常简单,您可以在下面找到一个示例来显示自定义字段“offercode”:

add_action( 'manage_product_posts_custom_column', 'wpso23858236_product_column_offercode', 10, 2 );

function wpso23858236_product_column_offercode( $column, $postid ) {
    if ( $column == 'offercode' ) {
        echo get_post_meta( $postid, 'offercode', true );
    }
}

您还可以使用插件来控制此行为,例如管理列


答案 2

这个表视图被许多插件和wordpress本身使用。您必须检查列名称。$columns['tags']是Wordpress Post View中的标签,而不是Woocommerce中的标签!

以下是Woocommerce使用的一些$columns列表:

$columns['cb']  
$columns['thumb']
$columns['name'] 
$columns['sku'] 
$columns['is_in_stock']
$columns['price']
$columns['product_cat'] 
$columns['product_tag']
$columns['featured']
$columns['product_type']
$columns['date']

这是应用这些删除的正确过滤器。

add_filter( 'manage_edit-product_columns', 'change_columns_filter',10, 1 );
function change_columns_filter( $columns ) {
unset($columns['product_tag']);
unset($columns['sku']);
unset($columns['featured']);
unset($columns['product_type']);
return $columns;
}

推荐