সমাধান এখানে উপলব্ধ
আমি ক্লায়েন্টেরিয়া নামে একটি কাস্টম পোস্ট প্রকার সেট আপ করেছি এবং প্রশাসকের ক্ষেত্রে এটির জন্য বেশ কয়েকটি কাস্টম কলাম স্থাপন করেছি - কাস্টম কলামগুলি সমস্ত কাস্টম মেটা ক্ষেত্র, আপনি আমার কোড থেকে দেখতে পাচ্ছেন। আমি ডিফল্টরূপে 'অ্যাপয়েন্টমেন্ট তারিখ' অবতরণ করে বাছাই করতে চাই।
সমস্ত কলামগুলি সূক্ষ্মভাবে কাজ করে এবং প্রত্যাশা অনুযায়ী ম্যানুয়ালি বাছাই করা যায় তবে আমি ডিফল্ট সাজানোর ক্রমটি পেতে পারি না।
আমি যদি ডিফল্ট সাজানোর ক্ষেত্রটিকে একটি মান ক্ষেত্রে (উদাহরণস্বরূপ 'শিরোনাম') এ পরিবর্তন করি তবে এটি প্রত্যাশার মতো কাজ করে; কেবলমাত্র যখন আমি কাস্টম কলামটি ডিফল্ট সাজানোর ক্রম হিসাবে সেট করার চেষ্টা করছি তখন এটি কাজ করবে না বলে মনে হয়। অর্ডারটি কাজ করে (যেমন আমি কাস্টম কলাম দিয়েও ডিফল্টরূপে এসএসসি এবং ডেস্কের মধ্যে পরিবর্তন করতে পারি), তবে এটি অর্ডারকে বাছাই করছে না তাই কাস্টম পোস্ট প্রকাশের তারিখ অনুসারে বাছাইয়ে ফিরে আসবে।
আমি কী মিস করছি?
আমার কোডটি নিম্নরূপ:
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');
}
}