我有一个自定义的帖子类型-“members”。在高级自定义字段(AFC)的帮助下,我创建了一个包含5个字段的字段组,并将该组分配给我的“成员”帖子类型。
我根据本文创建了“成员”的自定义管理列–http://www.elliotcondon.com/advanced-custom-fields-admin-custom-columns/
我创建了列:
function members_columns($columns){
$columns = array(
\'cb\' => \'<input type="checkbox" />\',
\'title\' => \'Name\',
\'picture\' => \'Picture\',
\'department\'=> \'Department\',
\'sex\' => \'Sex\',
\'featured\' => \'Fixed\',
\'staff_order\'=> \'Order\',
\'date\' => \'Date\',
);
return $columns;
}
用数据填充它们:
function members_custom_columns($column){
global $post;
if($column == \'picture\'){
echo wp_get_attachment_image( get_field(\'picture\', $post->ID), array(50,50) );
}
elseif($column == \'featured\'){
if(get_field(\'featured\')){
echo \'Yes\';
} else {
echo \'---\';
}
}
elseif($column == \'staff_order\'){
echo get_field(\'staff_order\');
}
elseif($column == \'department\'){
echo get_field(\'department\');
}
elseif($column == \'sex\'){
echo get_field(\'sex\');
}
}
并使其可排序:
function members_column_register_sortable( $columns ){
$columns[\'featured\'] = \'featured\';
$columns[\'staff_order\'] = \'staff_order\';
$columns[\'department\'] = \'department\';
return $columns;
}
并在我的插件文件中包含挂钩:
add_action("manage_posts_custom_column", "members_custom_columns");
add_filter("manage_edit-members_columns", "members_columns");
add_filter("manage_edit-members_sortable_columns", members_column_register_sortable" );
此字段组中对应的字段类型为:
“特色”-对/错
“staff\\u订单”-编号
“部门”-选择
Result:
从视觉上看,它看起来应该是这样的:所有正确填充列的数据,包括图片、所需列都可以排序,当我单击标题时,会出现一些排序。
The problem:
出于某种原因,排序只对原始的“标题”和“日期”字段有效。每当我按添加的3列(“特色”、“staff\\u order”或“department”)中的任何一列排序时,它都会按错误的顺序排序。
经过实验和测试,很明显,每次这3个自定义列中的任何一个都是按发布顺序排序的,即按“日期”排序的。
还有一件事需要注意,尽管排序顺序错误,但url参数似乎每次都是正确的,例如,如果我按“部门”排序,url是“/edit.php?post\\u type=members&orderby=department&order=asc”,但它按“日期”排序。
当我在我的wp\\U Posteta上运行相同的查询以查看数据是否以正确的顺序返回时,一切都正常。
请帮忙!