Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php wordpress向自定义帖子类型添加自定义列_Php_Wordpress_Woocommerce - Fatal编程技术网

Php wordpress向自定义帖子类型添加自定义列

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(

我目前与WooCommerce合作,WooCommerce是WordPress的电子商务插件。WooCommerce产品在名为product的新帖子类型中进行设置。我有以下代码,可将自定义列添加到此帖子类型的编辑屏幕:

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 

    }
}