여기에 사용 가능한 솔루션
clientarea라는 사용자 정의 게시물 유형을 설정하고 관리 영역에서 여러 사용자 정의 열을 설정했습니다. 사용자 정의 열은 코드에서 볼 수 있듯이 모든 사용자 정의 메타 필드입니다. 기본적으로 '약속 날짜'를 기준으로 내림차순으로 정렬하고 싶습니다.
모든 열이 제대로 작동하고 예상대로 수동으로 정렬 할 수 있지만 기본 정렬 순서를 사용할 수는 없습니다.
기본 정렬 필드를 표준 필드 (예 : '제목')로 변경하면 예상대로 작동합니다. 맞춤 열을 기본 정렬 순서로 설정하려고 할 때만 작동하지 않는 것 같습니다. 주문이 작동합니다 (즉, 사용자 정의 열을 사용하더라도 기본적으로 asc와 desc 사이에서 변경할 수 있음). 주문을받지 못하므로 사용자 정의 게시물이 게시 된 날짜를 기준으로 다시 정렬로 되돌아갑니다.
내가 무엇을 놓치고 있습니까?
내 코드는 다음과 같습니다.
add_action( 'manage_posts_custom_column' , 'custom_columns', 10, 2 );
function custom_columns( $column, $post_id ) {
global $wpdb;
switch ( $column ) {
case 'extranet_case_office':
$get_office_ID = get_post_meta( $post_id, 'extranet_case_office', true );
$get_office_name = $wpdb->get_results('SELECT post_title FROM `cn_bf_posts` WHERE `ID` = '.$get_office_ID);
echo $get_office_name[0]->post_title;
break;
case 'extranet_appointment_date':
echo date('d/m/Y',strtotime(get_post_meta( $post_id, 'extranet_appointment_date', true )));
break;
case 'extranet_appointment_type':
echo get_post_meta( $post_id, 'extranet_appointment_type', true );
break;
case 'extranet_insolvency_practioner':
$get_person_ID = get_post_meta( $post_id, 'extranet_insolvency_practioner', true );
$get_person_name = $wpdb->get_results('SELECT post_title FROM `cn_bf_posts` WHERE `ID` = '.$get_person_ID);
echo $get_person_name[0]->post_title;
break;
default:
break;
}
}
add_filter( 'manage_edit-clientarea_sortable_columns', 'my_sortable_clientarea_columns' );
function my_sortable_clientarea_columns( $columns ) {
$columns['extranet_case_office'] = 'extranet_sort_office';
$columns['extranet_appointment_date'] = 'extranet_sort_date';
$columns['extranet_appointment_type'] = 'extranet_sort_type';
$columns['extranet_insolvency_practioner'] = 'extranet_sort_IP';
return $columns;
}
add_action( 'pre_get_posts', 'extranet_orderby' );
function extranet_orderby( $query ) {
if( ! is_admin() )
return;
$orderby = $query->get( 'orderby');
switch ( $orderby ) {
case 'extranet_sort_office':
$query->set('meta_key','extranet_case_office');
$query->set('orderby','meta_value_num');
break;
case 'extranet_sort_date':
$query->set('meta_key','extranet_appointment_date');
$query->set('orderby','meta_value');
break;
case 'extranet_sort_type':
$query->set('meta_key','extranet_appointment_type');
$query->set('orderby','meta_value');
break;
case 'extranet_sort_IP':
$query->set('meta_key','extranet_insolvency_practioner');
$query->set('orderby','meta_value_num');
break;
default:
break;
}
}
add_action('pre_get_posts','clientarea_default_order');
function clientarea_default_order( $query ){
if( $query->get('post_type')=='clientarea' ){
if( $query->get('orderby') == '' )
$query->set('orderby','extranet_sort_date');
if( $query->get('order') == '' )
$query->set('order','desc');
}
}
다음-나는 과거에 혼합 된 결과를 가진 고객을 위해 이것을 시도했습니다. 이것에 대한 좋은 해결책을 열망합니다.
—
jdm2112
맞춤 항목에 대한 정렬을 해결할 수 있었습니까?
—
jdm2112
@ jdm2112-yep-교차 교환에 이것을 게시했습니다 (바운티를 설정하기에 충분한 담당자가 있기 때문에 ..)-주어진 답변 모두 정확하지만 허용되는 답변은 더 많은 설명과 제안 된 코드 개선을 제공합니다. stackoverflow.com/questions/31434373/…
—
SinisterBeard
적절한 솔루션을 추가해야합니다. 당신은 할 수 귀하의 게시물에서 솔루션을 복사 스택 오버플로 , 또는 모든 대답의 조합 후 바로 원래의 저자에 대한 신용의 형태로 링크를 게시 할 수 있습니다. 나는 @birgire가 신용으로 다시 게시해야한다는 것을 알고있다 ;-)
—
Pieter Goosen
문제에 도움이되었다 니 기쁘다. 여기 WPSE에 관한 질문이있다. "마음에 여부를 마음에"당신의 제안에 대한 감사를 @PieterGoosen 서사시 질문 😃입니다
—
birgire