我目前正在使用WooCommerce,一个用于WordPress的电子商务插件。 WooCommerce产品可以在一个新的后期类型产品中进行设置。我有以下代码,它为此帖子类型的编辑屏幕添加了一个自定义列:
add_filter( 'manage_edit-product_columns', 'my_edit_product_columns' ) ;
function my_edit_product_columns( $columns ) {
$columns = array(
'myfield' => __( 'My field' )
);
return $columns;
}
这很好用,但不幸的是它将它添加为最后一列。有没有办法订购列?我希望此专栏直接位于“价格列”
之后答案 0 :(得分:1)
传递给函数的$ columns my_edit_product_columns是包含所有现有列的数组。您可以替换整个事物或使用任何标准数组操作来更改列和&列顺序。
例如,如果你想指定列,你会做类似的事情(取自我使用的事件自定义帖子类型):
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Event Name",
"event_date" => "Date",
"start_time"=>"Time",
);
因此,如果您只是print_r($ columns)来查看它当前的内容,您可以手动重新排序。
要将列插入现有$ columns数组中的特定位置,请使用:
# Insert at offset 2
$offset = 2;
$newArray = array_slice($columns, 0, $offset, true) +
array('new_column_id' => 'New Column Name') +
array_slice($columns, $offset, NULL, true);
有关详情,请参阅此主题:array_splice() for associative arrays
// ADDED
我刚刚在本地使用称为产品的自定义帖子类型进行了测试。这段代码对我来说很好。偏移量从第1列开始,所以为了使我的新列成为第二列,我将偏移量设置为2。
public function productsListColumns($columns){
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Product",
"price" => "Price"
);
$offset = 2;
$newArray = array_slice($columns, 0, $offset, true) +
array('new_column_id' => 'New Column Name') +
array_slice($columns, $offset, NULL, true);
return $newArray;
}
答案 1 :(得分:0)
请检查以下代码。您只需要使用TribeEvents :: POSTTYPE
替换您的帖子类型 add_filter('manage_' . TribeEvents::POSTTYPE . '_posts_columns', 'column_headers');
add_action( 'manage_posts_custom_column', 'custom_columns' , 10, 2 );
function column_headers($columns)
{
$columns['tickets-attendees'] = __( 'Attendees', 'tribe-events-calendar');
return $columns;
}
function custom_columns( $column_id, $post_id ) {
if ( $column_id == 'tickets-attendees' ) {
//echo $post_id;
$items = TribeEventsTickets::get_event_attendees($post_id );
$attendeeCount = count($items);
?>
<a href = "edit.php?post_type=tribe_events&page=tickets-attendees&event_id=<?php echo $post_id; ?>"><?php echo $attendeeCount; ?></a>
<?php
}
}