Php wordpress向自定义帖子类型添加自定义列
我目前与WooCommerce合作,WooCommerce是WordPress的电子商务插件。WooCommerce产品在名为product的新帖子类型中进行设置。我有以下代码,可将自定义列添加到此帖子类型的编辑屏幕:Php wordpress向自定义帖子类型添加自定义列,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我目前与WooCommerce合作,WooCommerce是WordPress的电子商务插件。WooCommerce产品在名为product的新帖子类型中进行设置。我有以下代码,可将自定义列添加到此帖子类型的编辑屏幕: add_filter( 'manage_edit-product_columns', 'my_edit_product_columns' ) ; function my_edit_product_columns( $columns ) { $columns = array(
add_filter( 'manage_edit-product_columns', 'my_edit_product_columns' ) ;
function my_edit_product_columns( $columns ) {
$columns = array(
'myfield' => __( 'My field' )
);
return $columns;
}
这很好,但不幸的是,它将其添加为最后一列。有没有办法对列进行排序?我希望此列直接位于传递给函数“my_edit_product”的“Price column”之后。my_edit_product_columns是所有现有列的数组。您可以替换整个对象或使用任何标准数组操作来更改列和列顺序 例如,如果要指定列,可以执行以下操作(取自我使用的事件自定义帖子类型): 有关此主题的更多信息,请参阅此线程: //增加 我刚刚在我使用的一个名为products的自定义帖子类型上进行了本地测试。这个代码对我来说很好用。偏移量从第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;
}
公共函数productsListColumns($columns){
$columns=数组(
“cb”=>“”,
“标题”=>“产品”,
“价格”=>“价格”
);
$offset=2;
$newArray=array\u slice($columns,0,$offset,true)+
数组('new\u column\u id'=>'new column Name')+
数组_切片($columns,$offset,NULL,true);
返回$newArray;
}
请检查以下代码。您只需要用TribeEvents::POSTTYPE替换您的post类型
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
}
}
add_filter('manage_'.TribeEvents::POSTTYPE.'u posts_columns','column_headers');
添加操作('manage_posts_custom_column','custom_columns',10,2);
函数列标题($columns)
{
$columns['tickets-attenders']=_uu('attenders','tribe events calendar');
返回$columns;
}
函数自定义列($column\u id,$post\u id){
if($column_id==‘入场券与会者’){
//echo$post_id;
$items=TribeEventsTickets::获取活动参与者($post\u id);
$AttendeCount=计数($items);
?>
谢谢你的回答,我已经尝试了数组_切片,而该列仍然是最后一个?非常酷的答案-比尝试用jQuery破解要好得多
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;
}
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
}
}