편집 패널의 사용자 정의 열 순서 변경


27

다음과 같이 사용자 정의 열을 등록 할 때 :

//Register thumbnail column for au-gallery type
add_filter('manage_edit-au-gallery_columns', 'thumbnail_column');
function thumbnail_column($columns) {
$columns['thumbnail'] = 'Thumbnail';
return $columns;
}

기본적으로 오른쪽에 마지막으로 나타납니다. 주문을 어떻게 변경할 수 있습니까? 위의 열을 첫 번째 또는 두 번째 열로 표시하려면 어떻게합니까?

미리 감사합니다

답변:


36

기본적으로 PHP 질문을하고 있지만 WordPress와 관련이 있기 때문에 대답하겠습니다. 열 배열다시 작성하여 열 앞에 남겨두고 싶은 열을 삽입해야합니다 .

add_filter('manage_posts_columns', 'thumbnail_column');
function thumbnail_column($columns) {
  $new = array();
  foreach($columns as $key => $title) {
    if ($key=='author') // Put the Thumbnail column before the Author column
      $new['thumbnail'] = 'Thumbnail';
    $new[$key] = $title;
  }
  return $new;
}

예, 나는 그것이 더 쉬운 방법이라고 생각합니다 :) 그러나 나는 내 대답에 아이디어를 얻었습니다. 좋은 생각.
Bainternet

בניית אתרים-나는 당신이 당신의 답변을 할 때 거의 내 답변을 작성 완료되었습니다, 그래서 우리의 답변은 "메일에서 교차" , 말하자면. 어쨌든, 그것을 알아내는 데 시간이 걸렸습니다. 내가 처음 필요했을 때 그것은 확실히 나에게 일어나지 않았다.
MikeSchinkel

주의해야 할 사항 : 다른 플러그인이 작성자 열을 제거하면 어떻게됩니까? 자신의 미리보기 이미지 열도 사라집니다. 당신은 isset($new['thumbnail'])반환하기 전에 확인을 할 수 $new있습니다. 설정되지 않은 경우 예를 들어 끝에 추가하십시오.
Geert

5

WPML과 같은 플러그인을 사용하여 열을 맞춤 게시 유형에도 자동으로 추가하는 경우 테이블 헤더에 복잡한 코드가있을 수 있습니다.

코드를 열 정의에 복사하지 않으려 고합니다. 왜 그 문제에 대해 누군가가 것입니까?

우리는 이미 제공되고 멋지게 형식화되고 정렬 가능한 기본 열을 확장하고 싶습니다.

실제로 이것은 7 줄의 코드 일 뿐이며 다른 모든 열은 그대로 유지합니다.

# hook into manage_edit-<mycustomposttype>_columns
add_filter( 'manage_edit-mycustomposttype_columns', 'mycustomposttype_columns_definition' ) ;

# column definition. $columns is the original array from the admin interface for this posttype.
function mycustomposttype_columns_definition( $columns ) {

  # add your column key to the existing columns.
  $columns['mycolumn'] = __( 'Something different' ); 

  # now define a new order. you need to look up the column 
  # names in the HTML of the admin interface HTML of the table header. 
  #   "cb" is the "select all" checkbox.
  #   "title" is the title column.
  #   "date" is the date column.
  #   "icl_translations" comes from a plugin (in this case, WPML).
  # change the order of the names to change the order of the columns.
  $customOrder = array('cb', 'title', 'icl_translations', 'mycolumn', 'date');

  # return a new column array to wordpress.
  # order is the exactly like you set in $customOrder.
  foreach ($customOrder as $colname)
    $new[$colname] = $columns[$colname];    
  return $new;
}

이것이 도움이 되길 바랍니다 ..


3

내가 아는 유일한 방법은 자신의 열 배열을 만드는 것입니다.

// Add to admin_init function
add_filter('manage_edit-au-gallery_columns', 'add_my_gallery_columns');

function add_my_gallery_columns($gallery_columns) {
        $new_columns['cb'] = '<input type="checkbox" />';

        $new_columns['id'] = __('ID');
        $new_columns['title'] = _x('Gallery Name', 'column name');
                // your new column somewhere good in the middle
        $new_columns['thumbnail'] = __('Thumbnail');

        $new_columns['categories'] = __('Categories');
        $new_columns['tags'] = __('Tags');
        $new_columns['date'] = _x('Date', 'column name');

        return $new_columns;
    }

그런 다음 추가 된 추가 열을 평소처럼 렌더링합니다.

// Add to admin_init function
    add_action('manage_au-gallery_posts_custom_column', 'manage_gallery_columns', 10, 2);

    function manage_gallery_columns($column_name, $id) {
        global $wpdb;
        switch ($column_name) {
        case 'id':
            echo $id;
                break;

        case 'Thumbnail':
            $thumbnail_id = get_post_meta( $id, '_thumbnail_id', true );
                // image from gallery
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
                    }
                }
                if ( isset($thumb) && $thumb ) {echo $thumb; } else {echo __('None');}
            break;
        default:
            break;
        } // end switch
}

희망이 도움이


2

이것은 몇 가지 SO 답변의 조합입니다.

function array_insert( $array, $index, $insert ) {
    return array_slice( $array, 0, $index, true ) + $insert +
    array_slice( $array, $index, count( $array ) - $index, true);
}

add_filter( 'manage_resource_posts_columns' , function ( $columns ) {
    return array_insert( $columns, 2, [
        'image' => 'Featured Image'
    ] );
});

array_splice()필요에 따라 사용자 정의 키를 유지하지 못한다는 것을 알았 습니다. array_insert()그렇습니다.


1
이것이 정답이어야합니다.
xudre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.